现在使用的汇编语言差不多都是使用这两种程序框架,两种都是前辈流传下来的经典编程框架,区别在于返回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 SEGMEN