现在使用的汇编语言差不多都是使用这两种程序框架,两种都是前辈流传下来的经典编程框架,区别在于返回DOS方式不同!记下,以备必需时可以翻阅。

1.基于入栈的RET方式

DATA SEGMENT
......
DATA ENDS
;数据段定义
STACK SEGMENT PARA STACK
DW 20H DUP(0)
STACK ENDS
;堆栈段定义
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
PROC1 PROC FAR
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
...;其他语句.
RET;返回DOS
PROC1 ENDP
CODE ENDS
;代码段定义
END PROC1

程序段前缀0000H处存放了一条INT 20H指令,其功能是返回DOS。为此用RET指令退出时,只要在程序入口处将PSP:0000H压入堆栈中,在程序返回处使用RET指令就可以了。(PSP:段前缀)。

实例:实现z=(4x-y)/2。

代码:

DATA SEGMENT
X DB 2
Y DB 4
Z DB ?
DATA ENDS
STACK SEGMENT PARA STACK
DW 20H DUP(0)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
PROC1 PROC FAR
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV AL,X
MOV CL,2
SAL AL,CL;x乘与4(左移2位)
SUB AL,Y
SAR AL,1
MOV Z,AL;结果装入Z中
RET
PROC1 ENDP
CODE ENDS
END PROC1

2.基于EXE程序返回DOS的格式

 DATA SEGMENT
......
DATA ENDS
STACK1 SEGMENT PARA STACK
DW 20H DUP (0)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1
BEGIN: MOV AX,DATA
MOV DS,AX
......;其他语句
MOV AH,4CH
INT 21H;返回DOS
CODE ENDS
END BEGIN

这种格式使用DOS 21H的4C00H功能退出:

在程序需要退出返回DOS处安排如下两条指令:

MOV AX,4C00H;或者MOV AH,4CH

      INT 21H

这两条指令执行后就会返回DOS,采用这种方法退出没有任何 限制,只要程序执行到这两条指令就能返回DOS。

实例:实现z=(4x-y)/2。

代码:

 DATA SEGMENT
X DB 3
Y DB 4
Z DB ?
DATA ENDS
STACK SEGMENT PARA STACK
DW 20H DUP (0)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
BEGIN: MOV AX,DATA
MOV DS,AX
MOV AL,X
MOV CL,2
SAL AL,CL
SUB AL,Y
SAR AL,1
MOV Z,AL
MOV AH,4CH
INT 21H
CODE ENDS
END BEGIN

除了这两种还有其他的格式框架,主要是区别是返回DOS的方式不同!以上两种是最常用的两种格式!

----------------------------------------------------------

----------------------------------------------------------

汇编语言2种常用的编程框架相关推荐

  1. 几种常用深度学习框架简介

    几种常用深度学习框架简介 一.TensorFlow 1.1 Tensorflow简介 1.2 使用文档 1.3 预训练模型 二.Pytorch 2.1 Pytorch简介 2.2 使用文档 2.3 预 ...

  2. 四种常用的自动化测试框架

    一直想仔细研究框架,写个流水账似的测试程序不难,写个低维护成本的测试框架就很难了,所以研究多种测试框架还是很有必要的,知道孰优孰劣,才能在开始编写框架的时候打好基础,今天读到了KiKi Zhao的翻译 ...

  3. 10 种常用的CSS框架,收藏一下

    文章目录 1.Bootstrap 2. Foundation 3. Materialize CSS 4. Semantic UI 5. Bulma 6. UIKit 7. PureCSS 8. Tai ...

  4. Java 中几种常用的 RPC 框架介绍

    RPC是远程过程调用的简称,广泛应用在大规模分布式应用中,作用是有助于系统的垂直拆分,使系统更易拓展.Java中的RPC框架比较多,各有特色,广泛使用的有RMI.Hessian.Dubbo等.RPC还 ...

  5. rpc框架有哪些java_JAVA中几种常用的RPC框架介绍

    1.dubbo: 使用Hessian的序列化协议,传输则是TCP协议,使用了高性能的NIO框架Netty 服务接口 1 public interface DemoService { 2 String ...

  6. Java中几种常用的RPC框架介绍

    点击上方 "程序员小乐"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 关注订阅号「程序员小乐」,收看更多精彩内容 每日英文 Crouch down ...

  7. 【测试开发】几种常见的自动化测试框架

    几种常见的自动化测试框架 在软件测试领域,自动化测试框架有很多,这里主要介绍几种常用的自动化测试框架. 1.pytest pytest 是 Python 的一种单元测试框架,与 Python 自带的 ...

  8. 值得收藏的十种常用的CSS框架-蛙课网

    CSS框架是预先准备好的软件框架,允许使用层叠样式表语言更容易,更符合标准的进行网页设计.大多数这些框架包含至少一个栅格设计(grid).功能更强大的框架,还配备了更多的功能和附加的基于JavaScr ...

  9. 几种常用编程语言的编程思想和方法 转

    搞软件的人,编程语言的掌握是基本功,如果单单是学习语法,最慢的一周之内也应该可以搞定(个人认为 语法层面c++是最复杂的).不幸的是,软件的本质是逻辑,解决方案的设计是要借助某种解决问题或编程的思想的 ...

最新文章

  1. 活久见的设备连接故障
  2. 让逻辑关系破缺的最小空间尺寸
  3. 使用 netfilter 处理IPv6报文
  4. ssm mysql动态分页_SSM项目手动分页详解
  5. Spark IDEA 编程环境配置
  6. 一个简单的完成端口(服务端/客户端)类
  7. 罕有数据库系统之比拟 - Oracle数据库
  8. intel 酷睿core系列cpu的类型:U M H HQ MQ
  9. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第3节 线程同步机制_4_解决线程安全问题_同步代码块...
  10. 插值方法 matlab 实验,matlab计算方法实验报告3(插值问题).doc
  11. 云erp系统、进销存软件、仓储管理系统之间有哪些区别
  12. 解读《美国国家BIM标准》– BIM能力成熟度模型(十一)
  13. 英文之妙语连珠超级94句
  14. Word文档怎样转化为pdf格式
  15. 真的存在“对事不对人”吗?
  16. 如何在微信朋友圈分享网页内容的时候能够有缩略图
  17. 神奇的多项式求导矩阵与积分矩阵
  18. scons构建mdk工程
  19. 如何通过AppStore变态审核:看同行经验
  20. Leetcode.463 岛屿的周长

热门文章

  1. 发信息服务器恢复,手机短信删除了怎么恢复?看完恢复原理你就懂了!
  2. 全国计算机等级考试无法缴费,全国计算机等级考试网报缴费 时间为6月20至30日...
  3. BZOJ 2400(网络流最小割)
  4. UNIX套接字“\0XXX“ 格式化抽象本地地址
  5. 文件上传接受的类型:file的accept属性
  6. scp port 22: Connection refused
  7. Freeswitch常见问题
  8. modelsim独立仿真与联合仿真生成覆盖率流程(随笔)
  9. [LTR] 信息检索评价指标(RP/MAP/DCG/NDCG/RR/ERR)
  10. 在Windows XP中对文件进行加密