- 1、本文档共42页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机原理3.8课件
3.8 循环程序设计
编制循环程序就是要发现程序设计中的重复
性规律。
3.8.1 循环程序的基本结构
1、循环准备——设置次数及地址指针
2、循环工作——循环重复操作部分
3、循环修改——修改循环次数和地址指针
4、循环判断——判断循环是否结束,否则继
续循环,是则结束循环。 ;循环准备;3.8.2 循环指令(重复控制指令)
1、循环至CX=0的指令
格式:LOOP OPR ; OPR≡{标号}
功能:CX←CX-1,若CX≠0则转移到OPR
(继续循环),否则(即CX=0)结束循环。
说明:LOOP OPR 等效 DEC CX
JNZ OPR
;2、等于零/相等时循环指令
格式:LOOPZ/LOOPE OPR;
功能:CX←CX-1;若CX≠0且ZF=1(为零/相
等)则转移到OPR,否则(CX=0或ZF=0)结束循
环。
用途:双条件判断,例如比较两个数据块是否
相等,循环结束时CX=0表示相等,CX≠0时表示
不相等。;3、不等于零/不相等时循环指令
格式:LOOPNZ/LOOPNE OPR;
功能:CX←CX-1;若CX≠0且ZF=0(不为零/不相等)则转移到OPR,否则(CX=0或ZF=1)结束循环
用途:双条件判断,例如查找数据块是否存在某种字符或数据,循环结束时CX=0表示未找到,CX≠0时表示找到。;4、若CX=0转移指令
格式:JCXZ OPR;OPR≡{标号}
功能:若CX=0则转移到OPR。
用途:用CX控制结束循环。
注意:该指令一般与其他指令(如:DEC CX
等)联用。;3.8.3 循环程序设计方法
循环程序设计的关键是如何控制循环。
1、计数控制法
适用对象:循环次数已知。
控制方法:设置一个计数器,用倒计数法。
;
CX=100作循环计数器;
SI作源数据块地址指针;
DI作目的块地址指针。;流程图;DATA SEGMENT
BUFF1 DB 64H DUP(?);
BUFF2 DB 64H DUP(?);
DATA ENDS
CODE SEGMENT
ASSUME CS :CODE, DS: DATA
START:MOV AX,DATA;
MOV DS,AX;
;LOP: MOV AL,[SI];
MOV [DI],AL;
INC SI;
INC DI;
DEC CX;
JNZ LOP;
MOV AH,4CH;
INT 21H;
CODE ENDS;
END START;; 2、条件控制法
适用对象:对循环有一定的条件要求。
控制方法:根据给定的条件判断循环是否结束。
例3.26 内存中从STRING地址开始存放一
个以$结尾的字符串,要求检查所有字符是否均
为偶校验。是→置标志“0”,否→置标志 “-1”。
;例3.26流程图;程序如下:
DATA SEGMENT
STRING DB `THIS IS A STRING. $`
RESULT DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS :CODE,DS :DATA
START: MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET STRING ;BX←取字符
; 串首地址
MOV DI,OFFSET RESULT ;DI←结果单
;元地址
;LOP1: MOV AL,[BX] ;AL←取一字符
INC BX ;修改字符地址
CMP AL, `$` ;比较是否为$结束标志
JZ DONE ;若是
文档评论(0)