可以修改ip cs 代码段寄存器
修改ip 或者同时修改cs 和ip的指令都成为转移指令
只修改ip叫内转移
同时修改cs和ip叫做段间转移】
8086cpu的转移指令可以分为下面几类
无条件转移(jmp)
loop(循环指令)
条件转移
过程
中断
offset 操作符
返回标号的偏移地址
例
start:mov ax,offest start 相当于mov ax 0
s: mov ax ,offest s 相当于mov ax 3 因为前面的指令有三个字节
jmp
可以段内也可以段外
jmp要给出转移目标的地址和转移目标的距离(段内短转移,段间转移,段内近转移)
依靠位移的jmp指令
jmp short s段内短转移(依靠位移的转移)cpu在执行jmp指令的时候不需要转移目的的地址
具体步骤
cpu在执行这句话的时候,通过计算出和目标地址的唯一。然后给当前的ip加上偏移量就实现跳转。
转移的目标地址在指令中的jmp命令
jmp far ptr 标号实现的是段间转移(远转移)
for ptr 同时修改
cs 标号所在的段的段地址
ip标号所在的段中的偏移地址
jmp for ptr s
0B01BD0B
BD0B是高地址,代表段地址
0B01是低地址,代表偏移地址
转移地址在内存中的jmp指令
jmp word ptr 内存单元地址(段内转移)
将内存单元地址放一个目标位移的偏移地址。
jmp dword ptr(段间转移)
将内存单元地址中放一个偏移地址,一个目标的段地址