转移指令的原理
转移指令就是可以控制cpu执行内存中某处代码的指令
8086转移行为
只修改ip时,段内转移 /jmp ax
段内转移分为两种(短,近 转移)
短转移ip 范围-128~127
近转移ip 范围-32768~32767
同时修改cs:ip时 段间转移 /jmp 1000:0
转移指令
无条件转移指令(jmp )
条件转移指令
循环指令(loop)
过程
中断
操作符 offset
Offset功能是取得标号的偏移地址,
S:
Mov ax,1
Mov ax,offset s /相当于把s段的偏移地址送入ax当中(ax=cs:s)
Jmp指令(无条件转移指令,修改cs:ip或者只修改ip)
Jmp指令要给出的两种信息
1转移的目的地址
2转移的距离(段间转移,段内短转移,段内近转移)
依据位移进行转移的jmp指令(段内短转移)
Jmp short 标号(转到标号处执行指令)
Jmp near ptr 标号 (段内近转移)
Jmp far ptr 标号 (段间转移,远转移)
Cs=标号所在段的段地址 ip=标号在段中的偏移地址
寄存器中
Jmp 16位reg /ip=16位reg
内存中
Jmp word pty 内存单元地址(段内转移)
从内存单元地址处开始存放着一个字,是转移目的的偏移地址
Jmp dword ptr 内存单元地址(段间转移)
从内存单元地址处开始存放着两个字,高地址处的字是转移目的的段地址,低地址处是转移的目的的偏移地址
Jcxz指令(有条件转移指令,,短转移)
Jcxz 标号(如果cx=0,转到标号处运行) /if cx==0
Loop指令(循环指令,短转移)
Loop 标号 (cx=cx-1 如果cx不等于0,转到标号处执行)
转移位移超界编译器会报错