1. 无条件转移指令
(1)无条件段内直接转移指令
JMP 标号
JMP IP+地址差
使控制无条件地转移到标号地址处
段内无条件直接转移指令中的地址差可用一个字节表示,也可以用一个字表示
如果用字节表示就称短转移
如果用字表示就称近转移
段内近跳:JMP NEAR PTR PROG
段内短跳:JMP SHORT QUEST
(2)无条件段内间接转移指令
JMP OPRD
无条件地转移到OPRD的内容给定的目标地址处
(3)无条件段间直接转移指令
JMP FAR PTR 标号
无条件段间直接转移指令的具体动作是把指令中包含的目标地址的段值和偏移分别置入CS和IP
这种在指令中直接包含转移目标地址的转移方式称为绝对转移
(4)无条件段间间接转移指令
JMP OPRD
使控制无条件地转移到由操作数OPRD的内容给定的目标地址处。
OPRD必须是双字存储单元
双字存储单元的低字内容送IP,高字内容送CS
2. 条件转移指令
所有的条件转移都只是段内转移
条件转移指令不影响标志位
有符号数间的比较关系G(>),E(=),L(<)
无符号数间的比较关系A(>),E(=),B(<)
比较两数是否相等:CMP AX,BX 若AX=BX,则ZF=0
要比较AX和BX的大小:CMP AX,BX
当OF=0(没有溢出),若SF=0,则a>b;否则a<b
当OF=1(产生溢出),若SF=0,则a<b;否则a>b
3. 循环指令
与条件转移指令类似,仅属于段内转移
循环指令不影响标志位
(1)计数循环指令LOOP
LOOP 标号
使CX的值减1,如果结果不等于0,则转移到标号,否则顺序执行。
相当于:
DEC CX
JNZ 标号
在调用LOOP时,CX要先赋初值,最多可循环65536次
(2)等于/全零循环指令LOOPE/LOOPZ
LOOPE/LOOPZ 标号
使CX减1,当相等或为0时,(且零标志ZF=1),那么转移到标号,否则顺序执行。
(3)不等于/非零循环LOOPNE/LOOPNZ
LOOPE/LOOPZ 标号
与LOOPE,LOOPZ刚好相反
(4)跳转指令JCXZ
JCXZ 标号
当CX的值等于0的时候转移到标号,否则顺序执行
通常用在循环的开始,