码迷,mamicode.com
首页 > 其他好文 > 详细

汇编-10.0-CALL和RET指令

时间:2018-08-11 01:21:34      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:程序   执行   ret   不能   方法   pop   内容   转移   入栈   

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

1.ret和retf

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

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

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

(1).(IP)=((ss)*16+(sp))

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

 

用汇编语法解释,相当于:

pop 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指令

CPU执行call指令时,进行两步操作:

(1).将当前的IP或CS和IP压入栈中;

(2).转移

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

 

汇编-10.0-CALL和RET指令

标签:程序   执行   ret   不能   方法   pop   内容   转移   入栈   

原文地址:https://www.cnblogs.com/xigongxiaosha/p/9457700.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!