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

call && jmp 指令

时间:2014-07-27 21:45:05      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:

对于jmp指令:

 

(1)jmp short 标号
相当于(ip)=(ip)+8位位移 跳转范围是【-128,127】
(2)jmp near ptr 标号
相当于(ip)=(ip)+16位位移 跳转范围是【-32768,32767】
(3)jmp far ptr 标号
 相当于(CS)=标号所在段地址,(ip)=标号所在偏移地址


前两个是段内转移,依据位移进行转移,其中第一个是短转移,第二个是近转移;第三个是段间转移,直接修改CS和IP来实现转移。

还有转移地址在内存中的jmp指令,jmp word ptr 内存单元地址(段内转移),jmp dword ptr 内存单元地址(段间转移)。

 

 

对于call && ret指令:


(1)call 标号 
相当于  push ip,然后(ip)=(ip)+16位位移
(2)call far ptr 标号
相当于  push cs,push ip,(cs)=标号所在段的段地址,(ip)=标号在段中的偏移地址
(3)call 16位寄存器
相当于 push ip  然后 jmp 16位reg
(4)call word ptr 内存单元地址
相当于 push ip   jmp  word  ptr  内存单元地址
如:call word ptr ds:[0]
(5)call dword ptr 内存单元地址
相当于 push cs  push ip   jmp dword ptr 内存单元地址

call常和ret 配合使用,ret的功能相当于pop ip,如果是段间转移,则用retf返回,相当于pop ip  pop cs

call && jmp 指令

标签:

原文地址:http://www.cnblogs.com/milantgh/p/3871195.html

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