jmp指令
jmp指令为无条件转移指令,可以只修改IP,也可以同时修改CS和IP
jmp指令的主要应用格式:
1 2 3 4 5
| 只改变IP————段内转移 jmp short 标号(转到标号处执行指令)——短转移,8位位移 jmp near ptr 标号 ——近转移,16位位移 jmp 16位reg jmp word ptr 内存单元地址
|
1 2 3
| 同时改变CS和IP————段间转移 jmp far ptr 标号 ——远转移 jmp dword ptr 内存单元地址
|
call指令
CPU执行call指令时,进行两步操作:
- 将当前的IP或CS和IP压入栈中;
- 转移。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 只改变IP————段内转移
call 标号(将当前的IP压入栈后,转到标号处执行指令) 相当于操作: push IP jmp near ptr 标号 call 16位reg 相当于操作: push IP jmp 16位reg
call word ptr 内存地址单元 相当于操作: push IP jmp word ptr 内存地址单元
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| 同时改变CS和IP————段间转移
call far ptr 标号 相当于操作: push CS push IP jmp far ptr 标号 call dword ptr 内存单元地址 相当于操作: push CS push IP jmp dword ptr 内存单元地址
|
ret指令
ret指令调用栈中的数据,修改IP的内容,从而实现近转移;
retf指令调用栈中的数据,修改CS和IP的内容,从而实现远转移。
ret指令
相当于操作:pop IP
retf指令
相当于操作:pop IP pop CS