资源描述:
《第七章循环程序设计new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七章循环程序设计-----课本第五章设问:1.怎样用分支结构构成循环?2.循环指令有哪些?3.串处理操作是循环执行的吗?4.多重循环有什么特点?5.如何实现排序?本章重点循环结构程序设计方法1相关指令的学习(循环控制指令、串处理指令)2串处理(类循环结构)两种实现方法3多重循环结构程序设计方法47.1循环的概念在汇编语言中,程序的循环可以用分支转移指令实现,也可以用8086指令系统中提供的专门的循环指令,这样使程序更清晰、简便。除了循环指令之外,还有很多地方用到了循环的概念。例如串处理,需要对串中的字符循环地进行操作。7.1循环结构循环结构有两种形式。一种是WHILE结构,另一种
2、是DOUNTIL结构。WHILE结构DO-UNTIL结构控制条件初始化循环体YN控制条件初始化循环体YN一般由三部分组成:初始化:设置循环的初始状态循环体:循环的工作部分及修改部分控制条件:计数控制特征值控制地址边界控制循环结构构成课程小任务任务1从键盘输入一个字符,原样输出。任务2从键盘输入一个字符,判断当前字符是否为小写,若是,将其转换为大写,将其放入char单元,最后显示输出。任务3从键盘输入10个字符,做上述判断,小写字符的将其转换成大写,然后存入char数组,其他字符原样输出。任务4完成任务3的基本功能,并将char数组中的数据输出。程序段:MOVCX,10MOVSI,0
3、MOVAH,01HINT21HCMPAL,’a’JBDISPLAYCMPAL,’z’JADISPLAYSUBAL,20HMOVCHAR,ALINCSIDECCXJNZAGAINMOVDL,ALMOVAH,02HINT21HAGIAIN:DISPLAY:DATASEGMENTCHARDB?DATAENDSCHAR[SI]CHARDB10DUP(?)JMPEXIT上例:利用条件转移指令构成循环MOVCX,10(循环计数)AGAIN:MOVAH,01DECCXJNZAGAIN执行影响标志位的指令(如算术运算、比较及位测试等指令)执行适当的条件转移指令检测相应的标志位,根据条件实现转
4、移怎样用分支结构构成循环?任务4重点:如何输出CHAR数组?MOVCX,SIMOVSI,0MOVDL,CHAR[SI]MOVAH,02HINT21HINCSIDECCXJNZDISPARRAYDISPARRAY:循环控制方法:计数控制!LOOPDISPARRAYEXIT:MOVAH,4CHINT21H7.2循环控制指令循环控制指令的转移范围为:-128~+127字节格式:LOOP标号操作:如右图所示(段内短转移)(1)LOOP指令(2)等于继续循环指令格式:LOOPZ/LOOPE标号(3)不等于继续循环指令格式:LOOPNZ/LOOPNE标号操作:如右图所示操作:如右图所示例7.1
5、求X=1+2+3+…+10的累加值。MOVAL,0MOVBL,1MOVCX,10acc:ADDAL,BLINCBLLOOPacc;cx=cx-1,cx≠0?MOVX,AL1)LOOP指令2)LOOPZ/LOOPE指令格式:LOOPZOPRLOOPEOPR操作:(CX)=(CX)-1,若CX≠0,并且ZF=1则跳转到标号OPR处循环执行,若CX=0,或者ZF=0则执行LOOP的下一条指令。说明:结果为0或相等则循环。执行流程:当执行到LOOPZ/LOOPE时,如果之前的指令结果为0或者相等时继续循环,如果结果不为0或者不相等,提前退出循环,即使计数值CX还没减为0。例7.210个星号
6、字符的STRING串中有一个字符不是星号,找出该字符的位置,保存在Y单元。设:STRINGDB'******P**'……MOVCX,10MOVBX,-1AGAIN:INCBXCMPSTRING[BX],'*'LOOPEAGAINMOVY,BX3)LOOPNZ/LOOPNE指令不等于继续循环指令格式:LOOPNZOPRLOOPNEOPR操作:(CX)=(CX)-1,若CX≠0,并且ZF=0则跳转到标号OPR处循环执行,若CX=0,或者ZF=1则执行LOOP的下一条指令。例7.3求存放在STRS存储区中的字符串长度。MOVCX,80MOVSI,-1MOVAL,$AGAIN:INCS
7、ICMPAL,STRS[SI]LOOPNEAGAINMOVLEN,SI设:STRSDBstring$循环结束时CX的值为多少?循环控制方法分为两类:计数循环——用于循环次数已知的情况条件循环——用于循环次数不确定的情况特征值控制BX1234例7.4:把BX中的二进制数以十六进制的形式显示在屏幕上00101010001111002A3CBX……movch,4rotate:movcl,4rolbx,clmoval,blandal,0fhaddal,30h;’0’~’9