首页 > 其他 > 详细

转移指令原理

时间:2020-11-07 10:37:00      阅读:19      评论:0      收藏:0      [点我收藏+]

转移指令

可以修改IP或同时修改CS,IP的系统指令称为转移指令,可分为以下几类:

   转移行为:

          只修改IP,称为段内转移,如jmp ax

          同时修改CS和IP,称为段间转移,如jmp 1000:0

   修改范围:

          短转移:修改IP范围-128~127

          近转移:修改IP范围-32768~32767

   转移指令分类:

          无条件转移:jmp

          条件转移

          循环指令

          过程

          中断

offset操作符

offset是由编译器处理的符号,它能去标号的偏移地址,如:

start:mov ax,offset start

s:mov ax,offset s

这里就是将start和s的偏移地址分别送给ax,也就是0和3

jmp指令

jmp是无条件转移指令,可以只修改IP也可以同时修改CS和IP,只要给出两种信息,要转移的目的地址和专一的距离。

依据位移的jmp指令:jmp short标号(转到标号处执行指令)。这个指令实现的是段内短转移,对IP修改范围是-128~127,指令结束后CS:IP指向标号的地址,如:

0BBD:0000 start:mov ax,0 (B80000)

jmp short s (EB03)

add ax,1

s:inc ax (40)

执行之后ax值为1,因为跳过了add指令。

还应注意的是,jmp short短转移指令并不会在机器码中直接写明需要转移的地址(0BBD:0008),jmp的机器码是EB03并没有包含转移的地址,这里的转移距离是相对计算而出的地址,来看下面的执行过程:

1、(CS)=0BBDH,(IP)=0006H。CS:IP指向EB03(jmp short s)

2、读取指令EB03进入指令缓冲器

3、(IP)=(IP)+指令长度,即(IP)=(IP)+2

 

转移指令原理

原文:https://www.cnblogs.com/Fire-work/p/13939886.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!