- UID
- 852722
|
保护寄存器说明子句的说明格式:
USES寄存器列表
该说明子句要求汇编程序为其生成保护和恢复寄存器的指令序列,即:在进入子程序执行指令之前,把寄存器列表中的寄存器压进堆栈,在结束子程序执行时,把先前压进堆栈的寄存器弹出,以达到保护寄存器的目的。
寄存器列表:列举出在子程序中需要保护的寄存器名,即:在子程序开始时需要把内容进栈的寄存器名。若有多个寄存器名,则在寄存器名之间要用“空格”来分开。
例如:
DsipPROC USES AX DX, FUNC:WORD, MSGTR BYTE
MOVDX, MSG
MOVAX, FUNC
INT 21H
RET
DispENDP
汇编程序在处理该子程序时,会根据子句USES的作用,在第一条指令“MOV DX, MSG”之前,插入把寄存器AX和DX进栈的指令序列,即:
PUSHAX
PUSHDX
而在返回指令RET之前插入把寄存器DX和AX的值弹出的指令序列,即:
POPDX
POPAX
注意:若子程序含有多个RET或IRET指令,那么,汇编程序在每个RET或IRET指令前都将增加相应的弹出堆栈指令序列。
从子句USES的功能来看,它与前面7.4节“寄存器的包含与恢复”中所用的方法完全一致,所不同的是:用USE子句进行寄存器保护和恢复的代码是由汇编程序自动产生的,程序员不用关心如何去做,有点象高级语言的编程风格,而7.4节中的代码则是由程序员自己来安排的。 |
|