call 和 ret 指令都是转移指令,它们都修改IP ,或者同时修改CS 和IP 。他们经常被共同用来修改实现子程序的设计。
10.1
ret 和 retf
ret指令用栈中的数据,修改Ip的内容,从而实现近转移。
retf 指令用栈中的数据,修改CS 和 IP 的内容,从而实现远转移。
cpu执行 ret 指令时相当于 POP IP
CPU 执行 retf指令时 相当于进行 POP IP pop CS
cpu 执行call 指令时,实现俩步操作:
将当前的IP或者CS 和IP压入栈中
转移
10.2 call指令
cpu执行call指令时,进行俩步操作
将当前的IP或者CS和IP压入栈中
转移
10.3 依据位移进行转移的call指令
call标号 将当前的IP压栈后,转到标号处执行指令
10.4 转移的目的地址在指令中的call指令
call 其对应的机器指令中并没有转移的目的地址,而实相对于当前IP的转移位移
call far ptr 标号 实现的时段间转移
CPU 执行此种格式的call指令时,进行如下的操作
push CS
push IP
jmp far ptr 标号
10.5
转移地址在寄存器中的call指令
指令格式 :call 16位reg
CPU执行“call 16位reg时,相当于进行:
push IP
jmp 16位reg
10.6 转移地址在内存中的call指令
转移地址在内存中的call指令有俩种格式
(1)call word prt 内存单元地址
用汇编语法来解释此种格式的call指令
PUSH ip
jmp word ptr
(2)call dword ptr 内存单元地址
push cs
push ip
jmp dword ptr
10.8 mul指令
mul 是乘法指令。
”
原文地址:https://www.cnblogs.com/godoforange/p/10301096.html