欢迎来到天天文库
浏览记录
ID:17851479
大小:285.50 KB
页数:13页
时间:2018-09-07
《第5章 汇编语言 循环与分支程序设计》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第5章循环与分支程序设计【课前思考】 1.编制一个汇编语言程序分哪几步? 2.循环程序有哪两种基本结构?由几部分组成? 3.设计算法时对可能出现的边界情况如何考虑? 4.如何设置逻辑尺? 5.什么是起泡排序算法? 6.如何理解数组排序算法中采用的折半查找法? 7.如何使用跳跃表法实现CASE结构?【学习目标】 了解并掌握循环程序的构造方法,尤其是对循环控制条件的设置以及可能出现的边界情况的考虑。掌握起泡排序算法这种多重循环程序设计中的常用方法。交换标志位的设置在此算法中更能提高效率。
2、学会在数组排序算法中采用折半查找法来提高查找效率。学会使用跳跃表法实现CASE结构。【学习指南】 掌握编程的四个步骤至关重要。通过多看举例,学会正确分析理解题意、选择合适的数据结构及算法、坚持先画框图、选取有效指令编程、最后应当掌握运用调试手段进行调试。 学习多重循环程序设计前应熟练掌握单层循环程序设计的各种实现方法及实现细节,如对可能出现的边界情况的处理等。 学习起泡排序算法、折半查找法、跳跃表法之前,应首先理解传统实现方法。【难重点】 循环控制条件的选择。 考虑循环算法时注意可能出现的
3、边界情况。 静态地预置逻辑尺。动态地修改标志位。 多重循环程序设计时应分别考虑各重循环的控制条件及其程序实现,相互之间不能混淆。另外,应该注意在每次通过外层循环再次进入内层循环时,初始条件必须重新设置。 起泡排序算法是多重循环程序设计中的一种常用方法。 数组排序算法中可以采用折半查找法来提高查找效率。 CASE结构可以使用跳跃表法实现。【知识点】 编制一个汇编语言程序的一般步骤 5.1循环程序设计 5.1.1循环程序的基本结构 5.1.2循环程序设计方法举例 循环控制
4、条件 边界情况的处理 逻辑尺 5.1.3多重循环程序设计举例 起泡排序算法 交换标志位 5.2分支程序设计 5.2.1分支程序的基本结构 5.2.2分支程序设计方法举例——折半查找法 5.2.3跳跃表法第13页一般说来,编制一个汇编语言程序的步骤如下: 1)分析题意,确定算法。 2)根据算法,画出程序框图。 3)根据框图编写程序。 4)上机调试程序。程序有顺序、循环、分支和子程序四种结构形式。 顺序程序结构是指完全按顺序逐条执行的指
5、令序列,这在程序段中是大量存在的,但作为完整的程序则很少见,我们不对它们作专门讨论。5.1循环程序设计5.1.1循环程序的结构形式及组成 循环程序可以有两种结构形式,如图所示。一种是DO_WHILE结构形式;另一种是DO_UNTIL结构形式。初始化:设置循环的初始状态;循环体:循环的工作部分及修改部分;控制条件:计数控制、特征值控制、地址边界控制。例5.1试编制一个程序,把BX寄存器中的二进制数以十六进制的形式显示在屏幕上。解析:根据题目要求应将BX中的内容从左到右每4位一组显示出来,共显示4个十
6、六进制数位。如果显示的数位是0~9,则把4位二进制数加上30H,转换成相应的ASCII码30H~39H;如果是A~F,则应加上37H(30H+7),转换成ASCII码41H~46H。显示字符可以使用DOS功能调用来实现。右图是程序框图(P162页)。以binihex.asm为文件名,建立源程序如下:;binihex.asmprognamsegment ;定义代码段mainprocfarassumecs:prognamstart: ;程序从此处开始执行
7、 ;为正常返回DOS而设置堆栈push ds第13页 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 ;要显示的
8、数大于9? jl printit ;如果数在0~9之间则显示 add al,7h ;数在A~F之间则调整printit: mov dl,al ;把要显示字符的ASCII码送dl mov ah,2 ;功能号2送ah int 21h ;DOS功能调用 dec ch ;(ch)-1 jnz rotate ;4组都处理完?否,循环处理下一组 ret ;返回D
此文档下载收益归作者所有