微机原理3.8课件.ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档