如果没有特别规定,参与运算的两个操作数类型必须一致,且只允许一个为存储器操作数;如果参与运算的操作数只有一个,且为存储器操作数,必须使用PTR伪指令说明其数据类型;操作数不允许为段寄存器;目的操作数不允许为立即数;如果是存储器寻址,则前面介绍的各种存储器寻址方式均可使用。表33条件设置字节指令
f334控制转移类指令计算机执行程序一般是顺序地逐条执行指令。但经常须要根据不同条件做不同的处理,有时需要跳过几条指令,有时需要重复执行某段程序,或者转移到另一个程序段去执行。用于控制程序流程的指令包括转移、循环、过程调用和中断调用。一、转移指令1无条件转移指令格式:JMPTARGET功能:使程序无条件地转移到指令规定的目的地址TARGET去执行指令。转移分为短转移、段内转移近程转移和段间转移远程转移。1段内直接转移:格式:JMPSHORTTARGET;短转移JMPNEARPTRTARGET;近程转移功能:采用相对寻址将当前IP值即JMP指令下一条指令的地址与JMP指令中给出的偏移量之和送IP中。段内短转移SHORT指令偏移量为8位,允许转移偏移值的范围为128127。段内近程转移NEAR指令在16位指令模式下,偏移量为16位,允许转移偏移值范围为2152151。在32位指令模式下,偏移值范围为2312311。例356JMPNEXT
NEXT:MOVAL,BL本例为无条件转移到本段内,标号为NEXT的地址去执行指令,汇编汇编程序可汇编以确定目的地址与JMP指令的距离。
f2段内间接转移:格式:JMPREGJMPNEARPTRREG功能:段内间接转移,其中JMPREG指令地址在通用寄存器中,将其内容直接送IP实现程序转移。JMPNEARPTRREG指令地址在存储器中,默认段寄存器根据参与寻址的通用寄存器来确定,将指定存储单元的字取出直接送IP实现程序转移。在16位指令模式,转移偏移值范围为式,转移偏移值范围为。。在32位指令模
例357设DS1000HEBX00002000H。JMPBX;将2000H送IPJMPNEARPTRBX;将地址1000∶2000单元存放的一个字送IPJMPNEARPTREBX;将段选择符为1000H,偏移地址为00002000H单元存放的双字送EIP。3段间直接转移:格式:JMPFARPTRTARGET功能:段间直接转移,FARPTR说明标号TARGET具有远程属性。将指令中由TARGET指定的段值送CS,偏移地址送IP。例358JMPFARPTRNEXT。在16位指令模式下,段基地送CS,偏移地址为16位,转移偏移值范围;在32位指令模式下,代码段选择符送CS,偏移地址为32位,转移偏移值范围为。
4段间间接转移格式:JMPFARPTRReg功能:段r