首页 百科知识 分支程序设计

分支程序设计

时间:2022-10-17 百科知识 版权反馈
【摘要】:无条件转移指令JMP使程序无条件转移到标号指向的指令继续执行。无条件转移可分为段内转移和段间转移,两种情况都有直接寻址和间接寻址两种方式。汇编程序汇编时,将根据由标号确定的位移量是否大于8位,自动产生相应的段内短转移或段内直接转移指令。条件转移前,一般应该先执行算术运算、比较操作、测试操作等影响标志位设置的指令,然后再根据需要执行适当的条件转移指令。

2.6.3 分支程序设计

程序的分支通过转移指令来实现,因此转移指令的特点是改变程序执行顺序,本节先介绍转移指令。

1.转移指令

转移指令分无条件转移和条件转移两类。

(1)无条件转移指令

· 直接转移

指令格式:JMP 标号

无条件转移指令JMP使程序无条件转移到标号指向的指令继续执行。无条件转移可分为段内转移和段间转移,两种情况都有直接寻址和间接寻址两种方式。汇编程序汇编时,将根据由标号确定的位移量是否大于8位,自动产生相应的段内短转移或段内直接转移指令。

· 间接转移

指令格式:JMP WORD PTR OPR

对于段间间接转移方式,转移目的地址一般存放在数据段中,存放转移目的地址的单元地址OA由JMP指令的操作数(OPR)寻址方式确定,得到转移目的地址后,将转移目的地址的偏移地址部分送IP,段地址部分送CS,实现间接转移。

(2)条件转移指令

条件转移指令根据条件判断结果实现转移。条件转移指令有18条,基本格式为:

J×× 标号

其中标号是一个符号地址,××代表一种条件,条件转移指令通过检测PSW寄存器的条件码标志位状态确定是否转移,若条件码标志位的状态使条件为真,则转至标号处执行程序,否则顺序往下执行程序。

①一般条件转移指令

这类转移指令根据某一位标志位状态,检测条件是否为真,见表2-5。

表2-5 J××条件表

img130

②用于无符号数的条件转移指令

先使用比较指令对两个无符号数A和B进行比较,比较指令执行的是减法运算A−B,系统将根据运算结果设置标志位,然后可用表2-6中的指令执行条件转移。

表2-6 无符号数条件转移

img131

③ 用于带符号数的条件转移指令

先使用比较指令对两个带符号数进行比较,即进行A−B运算,由运算结果设置标志位,然后可用表2-7中的指令执行条件转移。

表2-7 符号数条件转移

img132

条件转移前,一般应该先执行算术运算、比较操作、测试操作等影响标志位设置的指令,然后再根据需要执行适当的条件转移指令。如:

img133

2.分支程序设计方法

分支程序设计方法可分为两类:

(1)用条件转移指令实现程序分支。

(2)联用跳转表和无条件转移指令实现程序分支。

第(1)类方法常用于通过条件检测实现两路分支,而第(2)类方法常用于实现多路分支。

第(1)类由条件检测实现程序分支。

下面举例说明使用条件转移指令实现程序分支的方法:

例2-41 求a、b、c三个符号数中的最大值,并存入max单元。

img134

img135

例2-42 将源数据区中的数据块传送到目的数据区中,如果源数据区与目的数据区位置没有重叠部分,则正向传送数据块(从起始地址开始按地址增量传送),否则反向传送数据块(从两个数据区的结束地址开始按地址减量传送)。

img136

img137

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈