控制转移指令

本文详细探讨了程序设计中的无条件转移指令如JMP、CALL和RET,条件转移指令(包括直接和间接标志转移)、循环控制指令如LOOP、LOOPE/LOOPZ等,以及中断指令的原理和使用。了解这些指令对于理解程序流程控制至关重要。
摘要由CSDN通过智能技术生成

1. 无条件转移指令

① JMP 无条件转移指令 (Jump)

JMP 目的

(1)功能:使程序无条件地转移到指令中地目的地址去执行。

(2)工作特点:

  • 段间直接远转移。

段内转移,近转移:转移地范围在 − 2 7 -2^{7} 27 ~ 2 7 2^{7} 27个字节之间
段间转移,远转移:转移地范围在 − 2 15 -2^{15} 215 ~ 2 15 2^{15} 215个字节之间
直接转移:指令码直接给出转移的目的地址,目的操作数用一个标号表示。
间接转移:目标地址包含在某个16位寄存器或存储单元中,CPU需根据寄存器或存储器寻址方式,间接求出转移地址。

② CALL 过程调用指令 (Call)

CALL 过程名

(1)功能

  • 第一步,返回地址。将紧跟在CALL指令后的一条指令的地址推入堆栈。
  • 第二步,转到子程序入口地址去执行相应的子程序。

(2)工作特点

  • 寻找入口地址的方法与JMP指令类似。

过程:为了实现某种特定的功能而独立编写的程序块。
过程嵌套:在过程运行中有趣调用另一个过程。
进过程调用:指令CALL和被调用的过程在同一代码段中。
原过程调用:指令CALL和被调用的过程不在同一代码段中。

③ RET 返回指令 (Return)

RET

(1)功能:从栈中弹出返回地址,使程序返回主程序继续执行。

(2)工作特点:

  • 近过程返回,从栈中弹出一个字→IP,并且使
  • 远过程返回,先从栈中抬出一个字→IP,并且使SP←SP + 2;再从栈中弹出一个字→

2. 条件转移指令

根据上一条指令执行后,CPU设置的状态标志位作为判别测试条件来决定是否转移。

条件操作符 标号

(1) 直接标志转移指令

指令助记符测试条件指令功能
JCCF = 1有进位转移
JNCCF = 0无进位转移
JZ/JEZF= 1结果为零/相等转移
JNZ/JNEZF = 0结果不为零/不相等转移
JSSF=1符号位负转移
JNSSF =0符号为正转移
JOOF =1溢出
JNOOF = 0无溢出
JP/JPEPF =1奇偶位为1/为偶转移
JNP/JPOPF =0奇偶位为0/为奇转移

(2) 间接标志转移指令

指令助记符测试条件指令功能
JA/JNBE
JAE/JNB
JB/JNAE
JBE/JNA
JG/JNLE
JGE/JNL
JL/JNGE
JLE/JNG

3. 循环控制指令


不影响任何标志。


① LOOP 循环指令 (LOOP)

LOOP 短标号

(1)功能:控制重复执行一系列指令。

(2)工作特点

  • 每循环一次,CX自动减1
  • CX ≠ 0时,继续循环。
  • CX = 0时,结束循环,执行LOOP之后的那条指令。

(3)要求

  • 指令执行前先将重复次数放入CX寄存器

② LOOPE / LOOPZ 相等或结果为0时循环 (Loop If Equal / Zero)

LOOPE
LOOPZ

(1)功能

  • LOOPE:相等时循环。
  • LOOPZ:结果为0时循环。

(2)工作特点

  • 每循环一次,CX自动减1
  • CX ≠ 0 和 ZF = 1,转到指令所指定的标号后重复执行。
  • CX = 0 或 ZF = 0,退出循环,执行LOOPZ/LOOPE后的那条指令。

③ LOOPNE / LOOPNZ 不相等或结果不为0时循环 (Loop If Not Equal / Zero)

LOOPNE
LOOPNZ

(1)功能

  • LOOPNE:不相等时循环。
  • LOOPNZ:结果不为0时循环。

(2)工作特点

  • 每循环一次,CX自动减1
  • CX ≠ 0 和 ZF = 0,转到指令所指定的标号后重复执行。
  • CX = 0 或 ZF = 1,退出循环,执行LOOPZ/LOOPE后的那条指令。

④ JCXZ 若CX为0时跳转 (Jump If CX )

JXCZ

(1)功能

(2)工作特点

  • 不对CX寄存器进行自动减1。
  • CX = 0,则转换到指令中标号所指定的地址处。
  • CX ≠ 0 ,往下继续执行。

3. 中断指令

参看

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值