有勇气的牛排博客
☰

汇编 CALL和RET指令


知止自律打卡-微信小程序APP
一款微信自律打卡小程序,支持自定义打卡项目、习惯记录、项目日记、专注计时与数据统计。自律打卡、学习打卡、读书打卡、健身打卡、运动打卡、减肥打卡、戒色打卡、养生打卡、戒烟、戒酒、戒熬夜等多种场景。万能打卡模板自由创建。可自定义每日打卡目标,记录习惯连续天数,可视化追踪成长进度。
了解产品详情 →
微信搜索「知止自律打卡」
知止自律打卡微信小程序

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:该指令用栈中的数据,修改cs和ip的内容,从而实现远转移。

    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 标号

评论区

×
×