第6–7章–5循环程子程序.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6–7章–5循环程子程序

第6-7章 微型计算机汇编语言及汇编程序 7.4 系统功能调用 7.5 汇编程序的功能及汇编过程 7.1 宏汇编语言的基本语法 7.2 伪指令 第6章 程序设计 (顺序、分支、循环、子程序) 7.3 宏指令 7.6 汇编语言程序设计 第6章 微型计算机的程序设计 6.1 程序设计步骤137 6.2 简单程序138 6.3 分支程序140 6.4 循环程序143 6.5 子程序146 6.6 查表程序150 6.4 循环程序设计 循环程序结构是满足一定条件的情况下,重复执行某段程序 循环结构的程序通常有4个部分: 循环初始部分——为开始循环准备必要的条件,如循环次数、循环体需要的数值等 循环体部分——指重复执行的程序部分,其中包括对循环条件等的修改程序段 循环控制部分——判断循环条件是否成立,决定是否继续循环 循环结束处理——分析和存放程序的结果 循环控制 循环结构程序的设计关键是循环控制部分 循环控制可以在进入循环之前进行,也可以在循环体后进行,于是形成两种结构: “先判断、后循环”结构 “先循环、后判断”结构 先循环后判断的循环结构 循环控制方式: 计数控制事先已知循环次数,每次循环加或减计数,并进行判定总次数以达到控制循环。 条件控制事先不知循环次数,在执行循环时判定某种条件真假来达到控制循环的目的。 状态控制可事先设定二进制位的状态,或由外界干预、测试得到的开关状态,决定循环与否。 多重循环 循环程序分为单循环和多重循环,两重以上循环称为多重循环 1 计数控制循环 计数控制循环利用循环次数作为控制条件 易于采用循环指令LOOP和JCXZ实现 初始化:将循环次数或最大循环次数置入CX 循环体 循环控制:用LOOP指令对CX减1、并判断是否为0 【例6.5】求两个多字节数之和。 这两个数在10050H地址开始的内存单元中,连续存放,低位在小地址一端,结果放在这两个数之后。设这两个多字节数均为8个字节长。 (1) 分析题目:这是一个重复累加内存单元中数的问题,因此可以用循环程序形式解决。因为86系列指令系统可以16位处理,所以,循环次数是4次。 (2) 程序流程图如图6.10所示。 START:MOV AX,1000H     MOV DS,AX ; DS=1000H      MOV SI,50H ; 第一个数指针SI=50H      MOV DI,58H ; 第二个数指针DI=58H     MOV BX,60H ; 结果指针BX=60H     MOV CX,4 ; 循环次数CX=4     CLC   ; 清进位CF=0 AA:  MOV AX,[SI]; 取一个字到AX        ADC AX,[DI]; AX←AX+[DI]+CF      MOV [BX],AX ; 存一个字到[BX] PUSHF  ; 保护进位CF   ADD SI,2 ; 修改第一个数指针   ADD DI,2 ; 修改第二个数指针   ADD BX,2 ; 修改结果指针      POPF  ; 恢复标志寄存器   LOOP AA ; CX←CX-1,若CX≠0转AA   HLT  ; CX=0,暂停 【例6.6】设计一个软件延时程序,延时时间约1ms左右 思路: 从手册上可以查得PUSHF和POPF指令分别为10和8个时钟节拍,LOOP BX指令为3.4个时钟节拍,即此循环体需要用10+8+3.4=21.4拍,而每个时钟节拍是根据此系统的晶振频率而定的。假设此系统用的是8MHz的晶振,则每个时钟节拍需要0.125μs,因此我们可以根据下列公式算出循环次数: X=延时时间/一次循环时间=1ms/21.4×0.125μs≈374次 换算成十六进制数为176H。 START:MOV CX,176H ;初始化,设定循环次数CX=374 LP1: PUSHF  ; 循环体     POPF     LOOP LP1 ; CX←CX-1,若CX≠0转LP1      HLT  ; 暂停 MOV BX,3E8H ; BX←1000 LP2: MOV CX,176H LP1: PUSHF    POPF  ;延时1ms程序段     LOOP LP1     DEC BX ; BX←BX-1    JNZ LP2 ; ZF=0时, 转至LP2,即BX≠0时转    HLT  ; 暂停 2 条件控制循环 条件控制循环需要利用特定条件判断循环是否结束 条件控制循环用条件转移指令判断循环条件 转移指令可以指定目的标号来改变程序的运行顺序,如果目的标号指向一个重复执行的语句体的开始或结束,便构成了循环控制结构 补充例:显示以0结尾的字

文档评论(0)

jdy261842 + 关注
实名认证
文档贡献者

分享好文档!

1亿VIP精品文档

相关文档