有勇气的牛排博客

汇编 CALL和RET指令

有勇气的牛排 1205 网络、逆向、汇编 2021-07-11 15:19:47

1 ret 和 retf

call 和 ret 指令都是转移指令,他们都修改ip,或同时修改cs和ip,他们经常被共同用来实现子程序的设计。

  1. ret:该指令用栈中的数据,修改ip的内容,从而实现近转移

    CPU执行ret指令时,进行下面两步操作 (1) (IP)=((ss)*16+(sp)) (2) (sp)=(sp)+2 相当于: pop IP
  2. retf:该指令用栈中的数据,修改csip的内容,从而实现远转移

    CPU执行retf指令时,进行下面4步操作: (1) (IP)=((ss)*16+(sp)) (2) (sp)=(sp)+2 (3) (cs)=((ss)*16+(sp)) (4) (sp)=(sp)+2 相当于: pop IP pop CS

2 call 指令

call 标号(将当前的IP压栈后,转到标号处指令指令)

CPU 执行此种格式的call时,进行如下操作 (1) (sp)=(sp)-2 ((ss)*16+(sp))=(IP) (2) (IP)=(IP)+16位位移 “call 标号”时 相当于: push IP jmp near ptr 标号

留言

专栏
文章
加入群聊