3.3.5.2 条件转移指令(conditional jump)


  条件转移指令是在满足了规定的条件后才控制程序转移的一类指令,8086的条件转移指令总结在表3.4中。

  所有条件转移指令都是短转移指令,转移的目标地址必须在当前IP地址的-128至+127字节范围之内,因此条件转移指令是2字节指令。

  计算转向地址的方法和无条件短转移指令是一样的,看例3.40的反汇编代码。

  例3.40程序中的"JNZ AGAIN"汇编成"JNZ 000D",000D是标号AGAIN的地址,指令"JNZ 000D"的机器代码是75FA,75是操作码,FA是位移量。当CPU读取JNZ指令后,IP寄存器自动加2(JNZ的指令长度)指向了下一条指令(MOV),此时IP的当前值是0013。计算转向地址时,(IP)当前+位移量 = 0013+FA = 0013+FFFA = 000D,这正是AGAIN的偏移地址。实际上FA是-6的补码,8位的FA与16位的0013相加时,FA符号扩展成为FFFA,相加的加结果为000D。