第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文档。上传文档
查看更多
第5章 汇编语言程序结构 汇编语言程序结构是程序所采用的结构形式。汇编语言程序共有4种结构形式,即:顺序结构、分支结构、循环结构和子程序结构。用汇编语言进行程序设计,与用高级语言(如C语言等)进行程序设计的过程很相似。对于比较复杂的问题可以先根据设计的要求,选用不同的程序结构,然后做出流程图,最后再根据流程图来编写程序。对于比较简单的问题则可以不做流程图而直接编程。这里除了讲解这4种基本的结构形式外,还专门讨论了常用的查表结构和运算类程序的设计。 5.1 顺序结构程序 顺序结构程序是一种无分支的直线型程序结构,即按照程序编写的顺序依次执行每一条指令。它是一种最简单、最基本的程序,所以有时也称为简单程序结构。这里举两个顺序结构的程序设计实例,其中用到的汇编指令在后面的指令系统中详细介绍。 1.实例1:首先是一个16位二进制数求补的汇编程序。这里假定带操作的这个双字节数存放在R3R4中,程序将求补以后的结果存放于地址20H、21H中。 2.实例2:再举一个计算两个16位二进制无符号数加法程序。16位二进制无符号数在内存中占有两个单元,这里假定已经分别存于寄存器R1R0,R3R2中。其中,R1和R3分别为高字节,R0和R2分别为低字节。两个数相加后的和存放在30H、31H、32H单元中。 5.2 分支结构程序 分支结构程序是根据判断条件的满足与否,产生一个或多个程序分支,以实现不同的程序流向的程序结构。在一些实际的应用程序中,程序不可能始终是按顺序直线执行的。要使用单片机解决一些实际的问题,通常要求单片机能够做出一些判断, 从而实现分支结构程序。 分支程序可以分为两种:双分支结构和多分支结构,分别如图和图所示。下面分别介绍这两种分支结构的程序设计。 5.2.1 双分支结构 双分支结构主要采用条件转移指令来实现分支转移,当给定的条件成立时,执行分支程序1,否则执行分支程序2。 编写分支程序的关键是如何进行分支条件的判断。在51系列单片机中,主要有位条件转移指令JC、JB等,比较条件转移指令CJNE等和累加器A判断指令JZ等,这些指令的详细介绍参阅后面的指令系统部分。合理使用这些指令可以完成各种各样的条件判断。 这里仍以前面的16位二进制数求补的汇编程序为例。这个程序也可以用分支结构的程序设计,这里仍假定带操作的这个双字节数存放在R3、R4中,程序将求补以后的结果存放于地址20H、21H中。程序的流程图,如图所示。程序示例如下 5.2.2 多分支结构 多分支结构是根据运算的结果指在多个分支中选择一个执行的程序结构。双分支是比较简单的情况,在实际的应用中,往往需要多分支跳转,又称为散装。51系列单片机的指令集中有散装指令JMP,详细的介绍可以参阅后面的指令系统介绍。散装指令JMP的使用格式如下: JMP @A+DPTR 其中数据指针DPTR为存放转移指令串(S0~Sn)的首地址,由累加器A的内容动态选择对应的转移指令。这样,便可以产生多达256个分支程序。 5.3 循环结构程序 循环结构程序是重复执行同一个程序段的一种基本程序结构。实际应用中,经常会遇到需要多次执行某段特定代码的情况,这时可以采用循环程序,缩短程序的长度,节省程序的存储空间。从本质上来说,循环结构程序是分支结构程序的一种特殊形式。由于它在程序设计中的重要性,因此一般单独作为一种程序结构的形式来介绍。 5.3.1 循环程序的结构和组成 一个典型的循环程序由4部分组成,即循环初始化部分、循环处理部分、循环控制部分和循环结束部分。下面分别进行介绍。 循环初始化部分:程序在进入循环处理程序段之前,需要设置循环初始参数,如循环的次数、有关的工作单元清零、变量设置和地址指针设置等。 循环处理部分:循环处理部分通常称为循环体,是循环执行的主要代码段,它是整个循环结构的核心。 循环控制部分:循环控制部分一般由两个单元组成,修改控制变量和判断循环结束。循环控制变量可以采用循环递减计数法,即每循环一次,控制变量减1,并判断是否为0,若不为0,则继续执行循环体程序,否则结束循环体的执行;也可以采用条件控制,即判断结束条件是否成立,如果不成立,则继续执行循环体,否则,结束循环。 循环结束部分:当循环体执行完毕后,需要在这里对结果进行处理和存储。 5.3.2 循环程序示例 51系列单片机提供了两条循环转移指令,示例如下: DJNZ Rn,LOOP ;采用工作寄存器Rn为控制寄存器 DJNZ Direct,LOOP ;采用直接寻址单元Direct作为控制寄存器 这里采用不同的控制寄存器来实现循环结构,关于这两条指令的详细介绍可以参阅后面的指令系统部分。这里,控制寄存器的计数方式一般都是减1计数,即每循环一次,计数器自动减1计数,同时判断控制寄存器是否为0,若不为0,继续执行循环

文档评论(0)

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

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

1亿VIP精品文档

相关文档