资源描述:
《汇编语言程序设计 第7章 8086 8088循环程序设计ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章8086/8088循环程序设计7.1循环程序结构7.2循环程序设计第7章8086/8088循环程序设计循环程序设计循环结构一般是根据某一条件判断为真或假来确定是否重复执行循环体循环指令和转移指令可以实现循环控制●循环程序结构形式DO-WHILE结构DO-UNTIL结构控制条件初始化循环体YN控制条件初始化循环体YN初始化:设置循环的初始状态循环体:循环的工作部分及修改部分控制条件:计数控制(LOOP)特征值控制(LOOPZ/LOOPNZ/条件跳转指令)●循环程序结构说明7.1循环程序结构循环控制的方法:⑴计
2、数控制法(循环次数已知的循环控制方法)当循环次数已知时,通常使用计数控制法。⑵条件控制法(循环次数未知的循环控制方法)有些情况,循环的次数无法事先确定,但它与其中的某些条件有关。这些条件可以通过这里来测试。若测试比较的结果满足循环条件,则继续循环;否则结束循环。⑶混合控制法(已知循环次数和循环继续的条件)7.1循环程序结构循环控制的方法--计数控制法①先将循环次数的初值N送入循环计数器,然后,每循环一次,循环计数器减1,直至循环计数器中的内容为0时结束循环。MOVCX,N;置初始值部分┇LAB:┇;工作部分┇;修
3、改部分DECCX;控制部分JNZLAB减计数7.1循环程序结构循环控制的方法--计数控制法②先将循环次数初值N的负数-N送入循环计数器,然后每循环一次,计数器加1,直至循环计数器的内容为0时结束循环。MOVCX,-N;置初始值部分┇LAB:┇;工作部分┇;修改部分INCCX;控制部分JNZLAB加计数7.1循环程序结构循环控制的方法--计数控制法③先将0送入循环计数器中,然后每循环一次,计数器加1,直至循环计数器与循环次数N相等时退出循环。例如:MOVCX,0;置初始值部分┇LAB:┇;工作部分┇;修改部分INC
4、CX;控制部分CMPCX,NJNZLAB加计数7.1循环程序结构循环控制的方法—条件控制法7.1统计AX寄存器中1的位数,并将统计结果放在CL寄存器中。采用计数控制法MOVCL,0MOVBX,16;置循环初值LAB:SALAX,1;将AX的内容左移一位,即最高位移到CFJNCLAB1;如果CF=0则表示AX的最高位为0,转LAB1INCCL;如果CF=1则表示AX的最高位为1,个数加1LAB1:DECBX;修改循环次数,未完则转LABJNZLABEXIT:…7.1循环程序结构7.1统计AX寄存器中1的位数,并将统
5、计结果放在CL寄存器中。采用条件控制法(更高效)MOVCL,0LAB:ANDAX,AXJZEXIT;AX=0时循环结束,转到EXITSALAX,1;将AX中的最高位移入CF中JNCLAB;如果CF=0则转LABINCCL;如果CF=1则CL+1→CLJMPLAB;转LAB处继续循环EXIT:…循环控制的方法—条件控制法7.2循环程序设计1.单循环程序设计所谓单重循环,就是循环体内不再包含循环。例7.2已知有几个元素存放在以BUF为首址的字节存贮区中,试统计其中正数的个数,并存放在随后的NUM字节单元中。NYNY开
6、始BUF的首偏移地址→BXBUF中元素个数→CX,0→AX[BX]≤0(AX)+1→AX(BX)+1→BX(CX)-1→CX(CX)=0(AX)-1→NUM结束图7.3 例7.2程序流程图7.2循环程序设计DATASEGMENTBUFDB23,56,-6,89,52,-89,-63,5,-12,52,0,89,-8NUMDB0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,NUM-BUFMOVAX,0LEABX,BUF7.
7、2循环程序设计AGAIN:CMPBYTEPTR[BX],0JLELAB1INCAXLAB1:INCBXLOOPAGAINMOVNUM,ALmovah,4cHint21hCODEENDSendstart调试例:把BX中的二进制数以十六进制的形式显示在屏幕上如:1011001011111010BB2FAHBX1234分析:(1)程序结构的确定由题意应该把BX的内容从左到右每4位为一组在屏幕上显示出来,显然这可以用循环结构来完成,每次显示一个十六进制数位,因而循环次数是已知的,计数值为4。(2)循环体的构成(算法确定
8、)循环体应该包括:二进制到所显示字符的ASCII之间的转换,以及每个字符的显示。需要了解相关知识:◆字符和其ASCII码之间的关系?“0”~“9”30H~39H,“A”~”F”41H~5AH◆如何显示一个字符?(a)将显示字符的ASCII码放入DL寄存器;(b)将AH的内容置为2(功能号);(c)执行INT21H(DOS功能调用)。(3)循环控制条件分析●因为循环次数