首页 理论教育 过程定义伪指令

过程定义伪指令

时间:2022-02-28 理论教育 版权反馈
【摘要】:利用过程定义语句可以把程序分成小段,以便于阅读、理解、调试和修改。用段间CALL指令调用的过程,必须用段间的RET指令返回,这样的过程是FAR过程。过程定义语句PROC和ENDP限定了一个过程,并说明它是NEAR或FAR过程。因为PRO1指名为NEAR过程,所以对它的调用,都汇编为段内调用,所以RET指令都汇编为段内返回指令。命令END告诉汇编程序,程序(过程)在哪儿结束,但它不会使汇编程序产生一条HLT指令。

3.2.4 过程定义伪指令

过程是程序的一部分,它可被程序调用。每次可调用一个过程,当过程中的指令执行完后,控制返回调用它的地方。

在8086/8088系统中,调用过程和从过程返回的指令是CALL和RET,这些指令可以是段内的和段间的。段内调用指令和返回指令指入栈出栈段内的偏移地址(即IP的值)。段间调用指令和返回指令需把段地址(CS的值)和偏移地址(IP的值)同时入栈和出栈。

过程定义语句的格式为:

过程名 PROC [NEAR]

或 过程名PROC FAR

RET

过程名ENDP

伪指令PROC和ENDP都必须有名字(Procedure_name),两者成对出现,名字必须相同。利用过程定义语句可以把程序分成小段,以便于阅读、理解、调试和修改。

若整个程序由主程序和若干子程序组成,则主程序和这些子程序必须一起包含在一个代码段中(除非是段间调用)。主程序和各个子程序都作为一个过程,用上述的过程定义语句来定义。用段内CALL指令调用的过程,必须用段内的RET指令返回,这样的过程是NEAR过程,有时候在过程定义语言PROC后面可以不写。用段间CALL指令调用的过程,必须用段间的RET指令返回,这样的过程是FAR过程。

过程定义语句PROC和ENDP限定了一个过程,并说明它是NEAR或FAR过程。汇编程序根据过程定义语句,当汇编到CALL过程时,知道汇编的是什么样的过程,当汇编到从这个过程返回时,知道是什么样的返回。

下面是一个过程定义的例子。

【例3-30】 CODE SEGMENT

PRO1 PROC NEAR

ADD CX,1

RET

PRO1ENDP

START: …

CALLPRO1

CALLPRO1

CODE ENDS

END START

因为PRO1指名为NEAR过程,所以对它的调用,都汇编为段内调用,所以RET指令都汇编为段内返回指令。

命令END(ENDP)告诉汇编程序,程序(过程)在哪儿结束,但它不会使汇编程序产生一条HLT(RET)指令。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈