第5章 循环与分支程序设计 5.1 循环程序设计 5.2 分支程序设计 第5章 循环与分支程序设计 在汇编语言程序设计中,程序有顺序、 分支、循环和子程序四种基本结构形式。汇编语言程序设计的基本过程可分为以下几个步骤:分析问题,建立数学模型—> 确定算法—>画流程框图—>编写程序 —>上机调试程序 5.1 循环程序设计 5.2 分支程序设计
5.1 循环程序设计 5.1.1 循环程序的结构 1.循环程序的组成 一个循环程序通常由以下5个部分组成: (1)初始化部分 (2)工作部分 (3)修改部分 (4)控制部分 (5)结束处理部分
2.循环程序的结构形式 循环程序有两种结构形式: (1)“先执行,后判断”结构 (2)“先判断,后执行”结构 5.1.2 循环指令 循环指令LOOP 格式:LOOP OPR 测试条件:(CX)≠0
当为零或相等时循环指令LOOPZ/LOOPE 格式:LOOPZ/LOOPE OPR 测试条件:ZF=1且(CX)≠0 当不为零或不相等时循环指令LOOPNZ/LOOPNE 格式:LOOPNZ/LOOPNE OPR 测试条件:ZF=0且(CX)≠0
5.1.3 循环程序设计方法和程序举例 如何控制循环是循环程序设计中一个重要环节,控制循环的方法很多,常用的有: 1.用计数器控制循环(循环次数已知) 2.按条件控制循环(循环次数未知) 3.用开关变量控制循环 4.用逻辑尺控制循环
例题 例1: 求数字1到100的和,将运算结果存储到DX寄存器中。(代码演示) 例2:数组ARRAY中存储10个字数组,其值分别为1,2,3,4,5,6,7,8,9,10。求和,并将其存储到SUM存储单元中。(代码演示) 例3:把BX寄存器内的二进制数用十六进制数的形式在屏幕上显示出来。(代码演示) 扩展 把数组中所有元素以16进制的形式输出到屏幕中.(代码演示)
5.1.4多重循环程序设计 例:有一个首地址为A的N字数组,编制程序使该数组中的数按照从大到小的次序整序.(代码演示) 1.分析 2.设计 3.编写代码 4.调试
5.2 分支结构程序设计 分支程序结构有两种形式:二分支程序结构和多分支程序结构 。 程序的分支一般是通过执行转移指令来实现的 。 5.2 分支结构程序设计 分支程序结构有两种形式:二分支程序结构和多分支程序结构 。 程序的分支一般是通过执行转移指令来实现的 。 5.2.1 利用比较(或测试)转移指令实现分支程序设计 5.2.2 利用跳转表实现分支程序设计 (1)根据表内地址分支 (2)根据表内指令分支 (3)根据表内关键字分支
5.2.1 利用比较(或测试) 转移指令实现分支程序设计 5.2.1 利用比较(或测试) 转移指令实现分支程序设计 例题 求x存储单元中存储的数据的绝对值,将其存入存储单元x_abs中。(代码演示) x (x>=0) |x|= -x (x < 0) 扩展 1.将x的绝对值以16进制显示 2.求数组中各个元素的绝对值
5.2.1 利用比较(或测试) 转移指令实现分支程序设计 5.2.1 利用比较(或测试) 转移指令实现分支程序设计 例题 见教材p164,折半查找。
5.2.2 利用跳转表实现分支程序设计 例题 乐曲演奏程序:用户根据自己的喜好,选择自己喜欢的乐曲。(代码演示)