汇编语言入门:CALL和RET指令(一)

时间:2021-11-06 11:18:29

call、ret指令,本质上还是汇编『跳转指令』,它们都用于修改IP,或同时修改CS和IP;这两个指令经常被用来实现子程序的设计


ret指令和retf指令

ret指令用栈中的数据,修改IP的内容,从而实现近转移
retf指令用栈的数据,修改CS和IP的内容,从而实现远转移

CPU执行ret指令时,相当于进行:

pop IP

CPU执行retf指令时,相当于进行:

pop IP
pop CS

call指令

当执行call指令时,进行两步操作:
1)将当前的IP或CS和IP压入栈中
2)转移

call指令不能实现短转移,它的书写格式同jmp指令

依据标号进行转移的call指令

语法格式:call 标号
汇编解释:(1) push IP (2) jmp near ptr 标号

依据目的地址在指令中的call指令

语法格式:call far ptr 标号
汇编解释:(1) push CS (2) push IP (3) jmp far ptr 标号

转移地址在寄存器中的call指令

语法格式:call 16位reg
汇编解释:(1) push IP (2) jmp 16位reg

转移地址在内存中的call指令

语法格式一:call word ptr 内存单元地址
汇编解释一:(1) push IP (2) jmp word ptr 内存单元地址

语法格式二:call dword ptr 内存单元地址
汇编解释二:(1) push CS (2) push IP (3) jmp dword ptr 内存单元地址