短转移的目标地址(或称转向地址)相对于当前IP值的位移量在-128至+127字节之间,当前IP值是指JMP指令的下一条指令的地址(如图3.11所示)。对短转移JMP,机器指令的第一个字节为操作码EB,第二个字节为位移量00~FF,这是一个带符号的补码数。转向地址的计算方法为:(IP)当前+8位位移量。操作符SHORT指示汇编程序将JMP指令汇编成一个2字节指令。


  ⑴ JMP SHORT label 短转移(short jump)
    执行操作:(IP) ← (IP)当前+8位位移量

 图3.11 短转移示意图
  

  ⑵ JMP NEAR PTR label 近转移(near jump)
  近转移是JMP指令的缺省格式,可以写为"JMP label"。它可在当前代码段内转移,机器指令的操作码是E9,位移量是16位的带符号补码数。指令中的转向地址可以是直接寻址方式、寄存器寻址方式、寄存器间接方式和存储器寻址方式。

  ● JMP label 直接转移(direct jump)
  执行操作:(IP) ← OFFSET label = (IP)当前+16位位移量
  转移的目标地址在指令中可直接使用符号地址,由于位移量为16位,它的转移范围应是-32768至+32767,也就是说,近转移指令可以转移到段内的任一个位置。

  ● JMP reg 寄存器间接转移(register indirect jump)
  执行操作:(IP) ← (reg)
  转移的目标地址在寄存器中,例如指令"JMP BX"执行的结果,将BX的内容送给IP。

  ● JMP WORD PTR OPR 存储器间接转移(memory indirect jump)
  执行操作:(IP) ← (PA+1,PA)
  存储器的物理地址PA由指令中的寻址方式确定,JMP指令执行的结果,把PA单元的字内容送到IP寄存器中。例如"JMP WORD PTR [DI]",物理地址PA = (DS)×24+(DI),指令执行的结果是(IP)= (PA+1,PA)。

  ⑶ JMP FAR PTR label 远转移(far jump)
  执行操作:(IP) ← label的段内偏移地址
       (CS) ← label所在段的段地址
  远转移实现的是段间的跳转,即从当前代码段跳转到另一个代码段中,这意味着指令执行后,不仅要改变IP的值,CS也会得到一个新的段地址。在汇编指令中,远转移的目标地址也可以使用除立即寻址方式外的任何寻址方式来表示。