汇编语言之--------------call和ret的使用

call ret指令都是转移指令,他们都修改ip或者同时修改cs ip

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

CPU执行ret指令时,进行下面两步操作

(1)(IP) = ((SS)*16 + (SP))

(2)(sp) = (sp) + 2

2、retf指令用栈中的数据修改CS和IP的内容,从而实现远转移

(1) (ip)= ((ss)*16 + (sp))

(2)  (sp)+2

(3) (cs) = ((ss)*16 + (sp))

(4) (sp) = (sp) + 2

把CS IP段寄存器和偏移放在栈里面

3、call指令经常跟ret指令配合使用,因此cpu执行call指令,进行两步操作

(1)将当前的ip或CS IP压入栈

(2)转移(jmp)

call指令不能实现短转移,除此之外,call指令实现转移的方法和jmp指令的原理相同

4、CPU执行call far ptr 这种格式的指令时的操作

call比较特殊的就是把当前的位置通过栈给保存了起来,call 和 jmp在跳转的时候是一模一样的

CPU在执行指令 call far ptr标号的时候相当于进行

push CS

push IP

jmp far ptr

5、转移地址在寄存器中的call指令

 

 

 

 

<49 --- 2  >

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值