程序设计中常见的分支结构根据其分支数量可分为两种:二路分支和多路分支结构,它们相当于高级语言中的if-then-else和switch-case控制结构。图4-3b所表示的是二路分支结构,而图4-3c所表示的是多路分支结构。这两种分支结构都需要先对条件进行判定,再根据判定结果确定执行哪路分支。用来实现分支结构的常用方法有:用比较和条件转移语句实现分支结构,利用地址跳转表实现分支结构等。
利用比较和条件转移语句来实现分支结构是最常见的程序设计方法。例如对一个成绩是否及格进行判断,就需要使用这样的代码段:
这里用一条CMP和一条JL语句通过比较和条件转移来实现二路分支结构,是一种非常典型的二路分支实现方法,重复多次比较和条件转移,就可以实现多路分支。比如在成绩统计时,要求把85分及以上成绩记做优(GOOD),70分及以上记做良(FINE),60分及以上记做及格(PASS),其余为不及格。可以用下面的代码段完成这个任务:
(www.xing528.com)
转移地址表是一种非常常见的用来实现多路分支的一种分支程序设计方法,它利用JMP、CALL等指令可以使用间接转移/调用的特性来实现多路分支结构。例如,下面一段代码可以用来根据输入的数字是0~9中的某一个转向十个不同的分支FUNC0~FUNC9(假设AL中是输入的数字)。
这里面ADDR_TABLE开始的一段存储单元中存储的就是FUNC0~FUNC9几个功能的入口地址,这些入口地址最终被装入到BX寄存器,作为JMP指令的转移目标地址使用。所以ADDR_TABLE表被称作转移地址表。这种实现多路分支结构的方法被称为转移地址表法。转移地址表不仅仅适用于分支程序的设计,也可以用于使用CALL指令实现多个子程序的选择调用。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。