首页 理论教育 微机原理及接口技术-分支结构程序设计

微机原理及接口技术-分支结构程序设计

时间:2023-11-16 理论教育 版权反馈
【摘要】:一条转移指令只能构成两个分支,要构成多个分支,必须在分支上形成新的条件并进行判断,实现分支上的再转移。转移指令主要是条件转移指令。

微机原理及接口技术-分支结构程序设计

在实际程序设计中,始终是顺序执行的情况很少,大部分情况下总要遇到比较、判断,并根据比较、判断的结果作出不同的处理,因此产生相应的分支程序。

1.分支结构的二要素

分支结构程序是具有判断及转移功能的程序,根据判断的结果决定程序执行的流向。因此,判断和转移构成了分支程序的两个要素。

①判断。根据运算结果对状态标志的影响,进行判断。因此,要能形成判断,必须在此之前有影响状态标志的指令执行,即形成条件后,才能进行判断。

②转移。由条件转移指令来实现,有时也可用无条件转移指令。一条转移指令只能构成两个分支,要构成多个分支,必须在分支上形成新的条件并进行判断,实现分支上的再转移。

2.利用比较、转移指令实现分支

这是一种最常用的方法。常用的比较判断指令有:CMP、CMPS、SCAS等。转移指令主要是条件转移指令。

例4-13 求两个无符号数差的绝对值,结果存放在D1单元中。

解题思路:首先对两个无符号数进行大小比较,用大数减去小数即得到两数差的绝对值。算法的具体描述参见图4-4给出的程序流程框图。

根据流程图,设计程序如下:

978-7-111-42233-4-Chapter04-52.jpg

图4-4 例4-13的程序流程框图

978-7-111-42233-4-Chapter04-53.jpg

978-7-111-42233-4-Chapter04-54.jpg(www.xing528.com)

例4-14 设在A、B、C字型变量中存放着3个数,若3个数均不为0,则求出它们的和(不考虑溢出)存入D单元。

解题思路:首先以寄存器BH为计数器统计A、B、C中0的个数,若BH为0(说明A、B、C三数均不为0),则求A、B、C之和;否则,程序结束。

978-7-111-42233-4-Chapter04-55.jpg

例4-14 中,多处用到CMP语句实现对转移条件的判断。

3.利用跳转表实现分支

在一个存储区中,连续存放一系列跳转地址、跳转指令或关键字,组成一个决定程序分支的跳转表。利用跳转表可以实现多个分支。

例4-15 某工厂有n种产品的加工程序R0、R1、R2、…、Rn,分别存放在PR0、PR1、PR2、…、PRnn<256)为首地址的内存区域中,而这n个首地址的偏移量连续存放在以BASE为地址的跳转表中。已知产品编号存放在NUM单元中,要求编写根据产品编号转至相应的处理程序的程序。

解题思路:根据要加工的产品编号i(i=0,1,2,…,n),通过查跳转表,获得对应加工程序存放的首地址PRi,转至该地址执行相应的处理程序即可。

跳转表如图4-5所示,PRi表示表中存放单元的偏移量:2*i,表地址=表首地址+偏移量。设计的程序如下:

978-7-111-42233-4-Chapter04-56.jpg

图4-5 跳转表

978-7-111-42233-4-Chapter04-57.jpg

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

我要反馈