欢迎来到天天文库
浏览记录
ID:41553475
大小:277.00 KB
页数:21页
时间:2019-08-27
《汇编语言程序设计 第7章_80868088循环程序设计》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、8086/8088和ARM核汇编语言程序设计第7章8086/8088循环程序设计9/16/20211第7章 8086/8088循环程序设计7.1循环程序结构7.2循环程序设计第7章8086/8088循环程序设计9/16/20212第7章 8086/8088循环程序设计循环程序一般由三个部分组成:⑴循环初始化部分:循环初始化部分。一般要进行地址指针、循环次数及某标志的设置,相关寄存器的清零等操作。只有正确地进行了初始化设置,循环程序才能正确运行,及时停止。⑵循环体:是要求重复执行的程序段部分,对应于要求重复
2、执行的操作。⑶循环控制部分:由该部分修改并判断控制循环的条件是否满足,以决定是否继续循环。循环结构程序的设计关键是循环控制部分7.1循环程序结构9/16/20213第7章 8086/8088循环程序设计7.1循环程序结构循环程序有两种结构形式控制条件初始化循环体YN控制条件初始化循环体NYDO_WHILE循环程序DO_UNTIL循环程序9/16/20214第7章 8086/8088循环程序设计7.1循环程序结构循环控制的方法:⑴计数控制法(循环次数已知的循环控制方法)当循环次数已知时,通常使用计数控制法。
3、⑵条件控制法(循环次数未知的循环控制方法)有些情况,循环的次数无法事先确定,但它与其中的某些条件有关。这些条件可以通过这里来测试。若测试比较的结果满足循环条件,则继续循环;否则结束循环。⑶混合控制法(已知循环次数和循环继续的条件)9/16/20215第7章 8086/8088循环程序设计7.1循环程序结构循环控制的方法--计数控制法①先将循环次数的初值N送入循环计数器,然后,每循环一次,循环计数器减1,直至循环计数器中的内容为0时结束循环。MOVCX,N;置初始值部分┇LAB:┇;工作部分┇;修改部分DE
4、CCX;控制部分JNZLABLOOPLAB9/16/20216第7章 8086/8088循环程序设计7.1循环程序结构循环控制的方法--计数控制法MOVBX,N;置初始值部分┇LAB:┇;工作部分┇;修改部分DECBX;控制部分JNZLABLOOPLAB9/16/20217第7章 8086/8088循环程序设计7.1循环程序结构循环控制的方法--计数控制法②先将循环次数初值N的负数-N送入循环计数器,然后每循环一次,计数器加1,直至循环计数器的内容为0时结束循环。MOVCX,-N;置初始值部分┇LAB:┇
5、;工作部分┇;修改部分INCCX;控制部分JNZLABLOOPLAB9/16/20218第7章 8086/8088循环程序设计7.1循环程序结构循环控制的方法--计数控制法③先将0送入循环计数器中,然后每循环一次,计数器加1,直至循环计数器与循环次数N相等时退出循环。例如:MOVCX,0;置初始值部分┇LAB:┇;工作部分┇;修改部分INCCX;控制部分CMPCX,NJNZLABLOOPLAB9/16/20219第7章 8086/8088循环程序设计7.1循环程序结构循环控制的方法—计数控制法7.1统计A
6、X寄存器中1的个数,并将统计结果放在CL寄存器中。采用计数控制法MOVCL,0MOVBX,16;置循环初值LAB:SALAX,1;将AX的内容左移一位,即最高位移到CFJNCLAB1;如果CF=0则表示AX的最高位为0,转LAB1INCCL;如果CF=1则表示AX的最高位为1,个数加1LAB1:DECBX;修改循环次数,未完则转LABJNZLABEXIT:…9/16/202110第7章 8086/8088循环程序设计7.1循环程序结构7.1统计AX寄存器中为1位数的,并将统计结果放在CL寄存器中。采用条件
7、控制法MOVCL,0LAB:ANDAX,AXJZEXIT;AX=0时循环结束,转到EXITSALAX,1;将AX中的最高位移入CF中JNCLAB;如果CF=0则转LABINCCL;如果CF=1则CL+1→CLJMPLAB;转LAB处继续循环EXIT:…循环控制的方法—条件控制法9/16/202111第7章 8086/8088循环程序设计7.2循环程序设计1.单循环程序设计所谓单重循环,就是循环体内不再包含循环。例7.2已知有几个元素存放在以BUF为首址的字节存贮区中,试统计其中正数的个数,并存放在随后的N
8、UM字节单元中。NYNY开始BUF的首偏移地址→BXBUF中元素个数→CX,0→AX[BX]≤0(AX)+1→AX(BX)+1→BX(CX)-1→CX(CX)=0AX→NUM结束图7.3例7.2程序流程图9/16/202112第7章 8086/8088循环程序设计7.2循环程序设计DATASEGMENTBUFDB23,56,-6,89,52,-89,-63,5,-12,52,0,89,-8NUMDB0DATAENDSCODES
此文档下载收益归作者所有