- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 汇编语 循环与分支程序设计
第5章 循环与分支程序设计
【课前思考】 1. 编制一个汇编语言程序分哪几步? 2. 循环程序有哪两种基本结构?由几部分组成? 3. 设计算法时对可能出现的边界情况如何考虑? 4. 如何设置逻辑尺? 5. 什么是起泡排序算法? 6. 如何理解数组排序算法中采用的折半查找法? 7. 如何使用跳跃表法实现CASE结构?【学习目标】 了解并掌握循环程序的构造方法,尤其是对循环控制条件的设置以及可能出现的边界情况的考虑。掌握起泡排序算法这种多重循环程序设计中的常用方法。交换标志位的设置在此算法中更能提高效率。学会在数组排序算法中采用折半查找法来提高查找效率。学会使用跳跃表法实现CASE结构。【学习指南】 掌握编程的四个步骤至关重要。通过多看举例,学会正确分析理解题意、选择合适的数据结构及算法、坚持先画框图、选取有效指令编程、最后应当掌握运用调试手段进行调试。 学习多重循环程序设计前应熟练掌握单层循环程序设计的各种实现方法及实现细节,如对可能出现的边界情况的处理等。 学习起泡排序算法、折半查找法、跳跃表法之前,应首先理解传统实现方法。【难重点】 循环控制条件的选择。 考虑循环算法时注意可能出现的边界情况。 静态地预置逻辑尺。动态地修改标志位。 多重循环程序设计时应分别考虑各重循环的控制条件及其程序实现,相互之间不能混淆。另外,应该注意在每次通过外层循环再次进入内层循环时,初始条件必须重新设置。 起泡排序算法是多重循环程序设计中的一种常用方法。 数组排序算法中可以采用折半查找法来提高查找效率。 CASE结构可以使用跳跃表法实现。【知识点】 编制一个汇编语言程序的一般步骤 5.1 循环程序设计 5.1.1 循环程序的基本结构 5.1.2 循环程序设计方法举例 循环控制条件 边界情况的处理 逻辑尺 5.1.3 多重循环程序设计举例 起泡排序算法 交换标志位 5.2 分支程序设计 5.2.1 分支程序的基本结构 5.2.2 分支程序设计方法举例折半查找法 5.2.3 跳跃表法一般说来,编制一个汇编语言程序的步骤如下: 1) 分析题意,确定算法。 2) 根据算法,画出程序框图。 3) 根据框图编写程序。 4)上机调试程序。程序有顺序、循环、分支和子程序四种结构形式。 顺序程序结构是指完全按顺序逐条执行的指令序列,这在程序段中是大量存在的,但作为完整的程序则很少见,我们不对它们作专门讨论。5.1 循环程序设计
5.1.1 循环程序的结构形式及组成 循环程序可以有两种结构形式,如所示。一种是DO_WHILE结构形式;另一种是DO_UNTIL结构形式。
循环体:循环的工作部分及修改部分;
控制条件:计数控制、特征值控制、地址边界控制。
例5.1 试编制一个程序,把BX寄存器中的二进制数以十六进制的形式显示在屏幕上。根据题目要求应将BX中的内容从左到右每4位一组显示出来,共显示4个十六进制数位。如果显示的数位是0~9,则把4位二进制数加上30H,转换成相应的ASCII码30H~39H;如果是A~F,则应加上37H(30H+7),转换成ASCII码41H~46H。显示字符可以使用DOS功能调用来实现。以binihex.asm为文件名,建立源程序如下:; binihex.asmprognam segment ; 定义代码段main proc farassume cs:prognam start: ; 程序从此处开始执行 ; 为正常返回DOS而设置堆栈push ds sub ax,ax push ax ; 下面是程序的主要部分 mov ch,4 ; 4组二进制数rotate:mov cl,4 ; 每组4个二进制位 rol bx,cl ; 把bx循环左移4位 mov al,bl ; 暂存bl到al中 and al,0fh ; 仅保留al的低4位 add al,30h ; 转换成ASCII码 cmp al,3ah ; 要显示的数大于9 ? jl printit ; 如果数在0~9之间则显示 add al,7h ; 数在A~F之间则调整printit: mov dl,al ; 把要显示字符的ASCII码送dl mov ah,2
文档评论(0)