《汇编语言程序设计》-相伟-电子教案第5章【循环程序设计】

《汇编语言程序设计》-相伟-电子教案第5章【循环程序设计】

ID:35568936

大小:211.00 KB

页数:58页

时间:2019-03-29

《汇编语言程序设计》-相伟-电子教案第5章【循环程序设计】_第1页
《汇编语言程序设计》-相伟-电子教案第5章【循环程序设计】_第2页
《汇编语言程序设计》-相伟-电子教案第5章【循环程序设计】_第3页
《汇编语言程序设计》-相伟-电子教案第5章【循环程序设计】_第4页
《汇编语言程序设计》-相伟-电子教案第5章【循环程序设计】_第5页
资源描述:

《《汇编语言程序设计》-相伟-电子教案第5章【循环程序设计】》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、21世纪高等院校规划教材汇编语言程序设计相伟主编 徐小平李珍香副主编中国水利水电出版社第5章循环程序设计本章主要讲解循环程序的基本结构和设计方法。通过本章学习,读者应该掌握以下内容:循环程序的一般结构形式循环指令计数型循环与条件型循环单重循环程序设计方法多重循环程序设计方法5.1循环程序的一般结构循环程序按照结构可分为单重循环和多重循环,按照循环控制的方法,可分为计数型循环与条件型循环。但是不管哪一种形式,循环程序都是由以下三部分组成:(1)循环初始化部分:为循环做准备工作,如设置循环次数,设置循环体需要的初始值以及控制循环的结束条件等。(2)循环体部分:这是循环工作的

2、主体,是需要重复执行的部分。其中也包括对循环条件进行修改的程序段。如果循环体中不包括其它的循环程序,则为单重循环结构,否则称为多重循环结构。(3)循环控制部分:根据循环结束条件判断是否继续循环。在循环次数已知的情况下,可用循环次数作为循环结束的条件,后面介绍的LOOP指令使这种循环很容易实现,这种循环属计数型循环;但是当循环次数未知时,就必须根据具体情况选择合理的结束条件,保证程序正常退出循环,这种循环属条件型循环。以下的流程图很好地说明了这两种循环结构。图5-1所示为计数型循环,图5-2所示为条件型循环。实际应用中,我们可以将循环控制部分放在循环体之前进行,形成“先判

3、断、后循环”的结构形式,也可以将循环控制部分放在循环体之后,形成“先循环、后判断”的结构形式。读者可以根据需要灵活掌握。下面分别举例说明计数型循环和条件型循环的控制方法。CX←循环次数循环体CX←循环次数-1(CX)=0NY退出循环图5-1计数型循环结构图5-2条件型循环结构循环初始化部分循环体(包括工作部分和修改循环条件)循环条件是否满足NY退出循环例5-1:已知有n个8位有符号二进制数,存放在以BUF为首址的字节存储区中,试统计其中正数的个数。分析:每个元素是一个8位有符号二进制数,因此要判断其是否为正数,需选择带符号数条件转移指令进行判断转移。由于共有n个元素,因

4、此整个程序的结构就是对以上判断重复n次,故选用计数型循环程序实现。存储单元及寄存器分配如下:BX:BUF存储区的地址指针,初值为BUF的偏移地址,每循环一次之后,其值加1。CX:循环计数器,初值为BUF存储区中元素的个数n,每循环一次之后,其值减1。AX:用来存放正数的个数,初值为零。字变量COUNT:用来最终存放正数的个数。程序流程图如图5-3所示:开始BX←BUF的偏移地址CX←BUF区中元素个数AX←0([BX])>0AX←(AX)+1BX←(BX)+1CX←(CX)-1(CX)=0COUNT←(AX)结束YYNN循环初始部分循环体部分循环控制部分图5-3统计正数

5、个数程序流程图源程序如下:STACKSEGMENTSTACKDB200DUP(0)STACKENDSDATASEGMENTBUFDB8,10,-5,100,-7,25,40N=$﹣BUF;BUF区中元素个数COUNTDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKBEGIN:MOVAX,DATAMOVDS,AXLEABX,BUFMOVCX,N;循环初始部分MOVAX,0AGAIN:CMPBYTEPTR[BX],0JLENEXTINCAX;循环体部分NEXT:INCBXDECCXJNZAGAIN;控制部分MOVCOU

6、NT,AX;将正数个数送入COUNT中MOVAH,4CHINT21HCODEENDSENDBEGIN该程序的循环体被重复执行了n次,即当(CX)=n,n-1,…,1时循环执行,当(CX)=0时结束循环,将正数个数5送入字变量COUNT中。对这种计数型循环,为了控制循环结束,在进入循环前要先确定循环次数,以后每循环一次就修改计数值,当计数值为零时就结束循环。读者可以思考以下问题:(1)在循环初始部分,如果将循环次数的负值送入循环计数器CX中,即“MOVCX,-n”,应该如何修改循环体部分和循环控制部分?(2)如果将0送入循环计数器CX中,即“MOVCX,0”,应该如何修改

7、程序呢?(3)如果要分别统计出正数、零、负数的个数,应如何设计程序?例5-2:统计寄存器BX中1的个数,结果存放在COUNT单元中。分析:要统计BX中1的个数必须进行逐位测试。首先判断最高位是否为1,然后用移位的方法把各位逐次移到最高位进行判断。循环的结束条件可用计数值16来控制,也就是可以用计数型循环来设计。但这种方法的缺点是无论BX中有没有1都必须循环16次。下面我们用条件控制法,即通过测试BX的值是否为零作为结束条件,这样可以大大缩短循环次数。存储单元及寄存器分配如下:BX:要测试的寄存器。CX:用来存放1的个数,初始值为0。字变量

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。