3. 汇编中的转移指令

可以修改IP(段内转移),或者能够同时修改IP和CS的指令(段间转移)称为转移指令

8086汇编中的转移指令可以分为以下几类:

  • 无条件转移指令(eg. jmp)
  • 条件转移指令
  • 循环指令(eg. loop)
  • 过程
  • 中断

jmp 指令

jmp指令是无条件转移指令,根据转移的范围,可以分为3类

  • jmp short 段内短转移指令(对IP的修改范围为-128~127)
  • jmp near ptr 段内近转移指令(对IP的修改范围为-32768~32767)
  • jmp far ptr 远转移指令(实现段间转移)     *在emu8086中无法使用

在实际的处理中,编译器会根据实际的转移距离选择合适的指令,所以只需要使用 jmp label/reg 即可

jmp指令还可以用内存单元中的地址修改IP与CS

  • jmp word ptr [Address] 用内存单元中的地址实现段内转移
  • jmp dword ptr [Address] 用内存单元中的地址实现段间转移(低位修改IP,高位修改CS)

jcxz 条件转移指令

jcxz执行的是短转移,对IP的修改范围是-128~127

跳转由cx控制,当 cx == 0 时进行跳转,否则继续执行

用C的风格描述则是:

if (cx == 0) jmp short label

loop 循环指令

loop指令也是短转移语句,它可以分为两步:

  1. dec cx
  2. if (cx != 0) jmp short label

 

 

发表评论

邮箱地址不会被公开。