安徽理工大学计算机汇编教程-8086/8088循环程序设计.ppt

上传人:xin****828 文档编号:15513856 上传时间:2020-08-15 格式:PPT 页数:21 大小:231.50KB
收藏 版权申诉 举报 下载
安徽理工大学计算机汇编教程-8086/8088循环程序设计.ppt_第1页
第1页 / 共21页
安徽理工大学计算机汇编教程-8086/8088循环程序设计.ppt_第2页
第2页 / 共21页
安徽理工大学计算机汇编教程-8086/8088循环程序设计.ppt_第3页
第3页 / 共21页
资源描述:

《安徽理工大学计算机汇编教程-8086/8088循环程序设计.ppt》由会员分享,可在线阅读,更多相关《安徽理工大学计算机汇编教程-8086/8088循环程序设计.ppt(21页珍藏版)》请在装配图网上搜索。

1、2020/8/15,第章循环程序设计,1,8086/8088和ARM核汇编语言程序设计,第章 循环程序设计,2020/8/15,第章循环程序设计,2,.1 循环程序结构,.2 循环程序设计,第章 循环程序设计,2020/8/15,第章循环程序设计,3,循环程序一般由三个部分组成: 循环初始化部分 :循环初始化部分。一般要进行地址指针、循环次数及某标志的设置,相关寄存器的清零等操作。 循环体:是要求重复执行的程序段部分,对应于要求重复执行的操作。 循环控制部分:由该部分修改并判断控制循环的条件是否满足,以决定是否继续循环。,.1 循环程序结构,2020/8/15,第章循环程序设计,4,.1 循环

2、程序结构,循环程序有两种结构形式,DO_WHILE循环程序,DO_UNTIL循环程序,2020/8/15,第章循环程序设计,5,.1 循环程序结构,循环控制的方法:, 计数控制法(循环次数已知的循环控制方法) 当循环次数已知时,通常使用计数控制法。 条件控制法(循环次数未知的循环控制方法) 有些情况,循环的次数无法事先确定,但它与其中的某些条件有关。选定某些条件来控制循环,每循环一次,测试一次条件,条件满足,继续循环,不满足,退出循环. 混合控制法(已知循环次数和循环继续的条件),2020/8/15,第章循环程序设计,6,.1 循环程序结构,循环控制的方法-计数控制法,先将循环次数的初值N送入

3、循环计数器,然后,每循环一次,循环计数器减1,直至循环计数器中的内容为0时结束循环。,MOVCX,N ;置初始值部分 LAB: ;工作部分 ;修改部分 DEC CX;控制部分 JNZ LAB,2020/8/15,第章循环程序设计,7,.1 循环程序结构,循环控制的方法-计数控制法,先将循环次数初值N的负数-N送入循环计数器,然后每循环一次,计数器加1,直至循环计数器的内容为0时结束循环。,MOVCX,-N;置初始值部分 LAB: ;工作部分 ;修改部分 INCCX;控制部分 JNZLAB,2020/8/15,第章循环程序设计,8,.1 循环程序结构,循环控制的方法-计数控制法,先将0送入循环计

4、数器中,然后每循环一次,计数器加1,直至循环计数器与循环次数N相等时退出循环。例如:,MOVCX,0 ;置初始值部分 LAB: ;工作部分 INCCX ;修改部分 CMPCX,N ;控制部分 JNZ LAB,2020/8/15,第章循环程序设计,9,.1 循环程序结构,循环控制的方法计数控制法,7.1 统计AX寄存器中为1位数的,并将统计结果放在CL寄存器中。 采用计数控制法,MOVCL,0 ;置循环初值 MOVBX,16 LAB:SALAX,1 ;将AX的内容左移一位,即最高位移到CFJNCLAB1 ;如果CF=0则表示AX的最高位为0,转LAB1 INCCL ;如果CF=1则表示AX的最高

5、位为1,个数加1 LAB1: DECBX ;修改循环次数,未完则转LAB JNZ LAB EXIT:,2020/8/15,第章循环程序设计,10,.1 循环程序结构,7.1 统计AX寄存器中为1位数的,并将统计结果放在CL寄存器中。 采用条件控制法,MOVCL,0 LAB: ANDAX,AX JZEXIT;AX=0时循环结束,转到EXIT SALAX,1;将AX中的最高位移入CF中 JNCLAB;如果CF=0则转LAB INCCL;如果CF=1则CL+1CL JMPLAB;转LAB处继续循环 EXIT:,循环控制的方法条件控制法,2020/8/15,第章循环程序设计,11,.2 循环程序设计,

6、1. 单循环程序设计 所谓单重循环,就是循环体内不再包含循环。,例7.2 已知有几个元素存放在以BUF为首址的字节存贮区中,试统计其中正数的个数,并存放在随后的NUM字节单元中。,2020/8/15,第章循环程序设计,12,.2 循环程序设计,DATA SEGMENT BUFDB 23,56,-6,89,52,-89,-63,5,-12,52,0,89,-8 NUM DB0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA MAIN PROC FAR START: PUSHDS XORAX,AX PUSHAX MOVAX,DATA MOVDS,AX M

7、OVCX,NUM-BUF MOVAX,0 LEABX,BUF,2020/8/15,第章循环程序设计,13,.2 循环程序设计,AGAIN: CMPBYTE PTR BX,0 JLELAB1 INCAX LAB1: INCBX LOOPAGAIN MOV NUM,AL RET MAIN ENDP CODE ENDS,2020/8/15,第章循环程序设计,14,.2 循环程序设计,2. 多重循环程序设计,设计多重循环程序时注意下面两点:,(1) 内层循环必须完全包含在外层循环内,(2)在每次通过外层循环进入内层循环时,内层循环的初始条件必须重设。,2020/8/15,第章循环程序设计,15,.2

8、循环程序设计,例7.4 有一首地址为ADDR的N字数组,编制程序使该数组按照从大到小的顺序排列。,这里采用起泡排序算法,从第一个数开始依次对相邻两个数进行比较,大数在前,小数在后,若次序不对,则两个数交换位置。,数108169032 第一遍101690328 第二遍169032108 第三遍903216108,2020/8/15,第章循环程序设计,16,.2 循环程序设计,开始,COUNT1 N-1,COUNT2 COUNT1,I0,AI=AI+1,AIAI+1,I=I+1,COUNT2COUNT2-1,COUNT1COUNT1-1,COUNT2=0?,COUNT1=0?,结束,Y,N,Y,Y

9、,N,N,2020/8/15,第章循环程序设计,17,.2 循环程序设计,mov cx,count;CX数组元素个数 dec cx;元素个数减1为外循环次数 outlp:mov dx,cx;DX内循环次数 mov bx,offset addr inlp:mov ax,bx;取前一个元素 cmp ax,bx+2;与后一个元素比较 jge next ;前一个大于等于后一个元素,则不进行交换 xchg ax,bx+2;否则,进行交换 mov bx,ax next:add bx,2;下一对元素 dec dx jnz inlp;内循环尾 loop outlp;外循环尾,2020/8/15,第章循环程序设

10、计,18,.2 循环程序设计,为提高效率,可以采用另一种结束外循环的方法:设立一个交换标志,每次进入内循环之前使其置1;在内循环中每做一次数据交换操作就将该标志位置0。在每次内循环结束后,可以测试交换标志,如为0,则再一次进入外循环;如该位为1,则说明上一遍比较没有引起数据交换,数组已经整序完毕,这样就可以结束外循环。 本例流程图见图7.6,2020/8/15,第章循环程序设计,19,.2 循环程序设计,程序清单:,DATA SEGMENT COUNT DW10 ADDR DW 25H,36H,89H,-96H,45H,52H,30H,78H,12H,99H DATA ENDS CODE SE

11、GMENT ASSUME CS:CODE,DS:DATA MAIN PROC FAR START:MOVAX,DATA MOVDS,AX MOVCX,COUNT,2020/8/15,第章循环程序设计,20,.2 循环程序设计,LAB1: MOVBX,1 DECCX JZEXIT PUSHCX LEADI,ADDR LAB2: MOVAX,DI CMP DI+2 ,AX JLE LAB3 XCHGDI+2,AX MOV DI,AX XORBX,BX,LAB3: ADD DI,2 LOOP LAB2 POP CX CMP BX,0 JZ LAB1 EXIT: MOV AH,4CH INT 21H MAIN ENDP CODE ENDS ENDSTART,2020/8/15,第章循环程序设计,21,.2 循环程序设计,设计循环程序应该注意: 使用LOOPZ、LOOPNZ指令实现循环控制时,控制的一个依据是CX减1后的值,另一个依据是前一条影响ZF标志位的指令产生的ZF标志。为了提供后一个依据,必须根据题意在循环工作部分设置合适的影响ZF标志的指令,并且要避免该指令产生的ZF标志被其后的指令所破坏。 在进行循环程序设计时,要根据区分循环工作部分和置循环初值部分各自应作的操作。 尽可能使用带有重复前缀的串操作指令实现循环程序设计,这样的循环程序简洁,而且运行速度快。,

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!