关于汇编中JMP跳转的等价变形有跳转汇编 jmp 00489670 等价与 mov eax,00489670 push eax retn为什么?请详细解答一下,谢谢了~~~

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/16 16:20:21

关于汇编中JMP跳转的等价变形有跳转汇编 jmp 00489670 等价与 mov eax,00489670 push eax retn为什么?请详细解答一下,谢谢了~~~
关于汇编中JMP跳转的等价变形
有跳转汇编 jmp 00489670
等价与 mov eax,00489670
push eax
retn
为什么?请详细解答一下,谢谢了~~~

关于汇编中JMP跳转的等价变形有跳转汇编 jmp 00489670 等价与 mov eax,00489670 push eax retn为什么?请详细解答一下,谢谢了~~~
retn是返回调用者的下一条指令的指令.正常情况下,它是返回到CALL指令的下一条指令.执行CALL指令的时候,系统会自动把其下一条指令的地址压入堆栈,然后转到调用子程序,子程序执行完毕,最后一条指令就是retn,它从堆栈弹出先前压入堆栈的地址给指令指针寄存器IP,并跳转到这个地址继续执行.
三条等价指令中,第一条把立即数00489670赋给eax,第二条把这个数压入堆栈,第三条执行retn,正是这条指令把刚才压入堆栈的立即数00489670弹出并赋给IP,并跳转到这个地址继续执行,从而实现了与jmp 00489670指令完全相同的功能,所以称为等价.