单片机第3章 指令系统、汇编语言、C51.pptVIP

单片机第3章 指令系统、汇编语言、C51.ppt

  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文档。上传文档
查看更多
7. BIT(地址符号命令) 格式:标识符 BIT 位地址 功能:将位地址赋以标识符(注意,不是标号)。 3.2.3 程序设计步骤及技术 1. 程序设计步骤 汇编语言程序设计一般经过以下几个步骤: (1) 分析问题,明确任务要求,对于复杂的问题,还要将要解决的问题抽象成数学模型。 (2) 确定算法,即根据实际问题和指令系统的特点确定完成这一任务需经历的步骤。 (3) 根据所选择的算法,确定内存单元的分配;使用哪些存储器单元;使用哪些寄存器;程序运行中的中间数据及结果存放在哪些单元,以利于提高程序的效率和运行速度。 (4) 根据流程图,编写源程序。 (5) 上机对源程序进行汇编、调试。 2. 程序设计技术 在进行汇编语言程序设计时,对于同一个问题,会有不同的编程方式,但应按照结构化程序设计的要求,即程序的基本结构应采用顺序、选择和循环3种基本结构。 在进行程序设计时,应注意以下事项和技巧: 1)把要解决的问题化成一个个具有一定独立性的功能模块,各模块尽量采用子程序完成其功能。 2)力求少用无条件转移指令,尽量采用循环结构。 3)对主要的程序段要下功夫精心设计,这样会收到事半功倍的效果。 4)由于MCS-51程序存储器的某些初始单元已有定义,因此,在需要使用这些单元或附近单元时,应在该单元内安排一条转移指令。 5)能用8位数据解决问题的就不要使用16位数据。 6)在中断处理程序中,要保护好现场(包括标志寄存器的内容),中断结束前要恢复现场。 7)累加器是信息传递的枢纽,在调用子程序时应通过累加器传送子程序的参数,通过累加器向主程序传送返回参数。 8)为了保证程序运行的安全可靠,应考虑使用软件抗干扰技术,如数字滤波技术、指令冗余技术、软件陷井技术,用汇编语言程序实现这些技术,不需要增加硬件成本,可靠性高,稳定性好,方便灵活。 用汇编语言编写程序,对于初学者来说是会遇到困难的,程序设计者只有通过实践,不断积累经验,才能编写出较高质量的程序。 3.2.4 程序设计实例 一 汇编语言基本程序设计 1. 简单程序 简单程序是按照程序编写的顺序逐条依次执行的,是程序的最基本的结构。 【例】 将片内RAM的30H和31H的内容相加,结果存入32H。假设整个程序存放在存储器中以2000H为起始地址的单元。 程序1: ORG 2000H MOV A, 30H ; 取第一个操作数 ADD A, 31H ; 两个操作数相加 MOV 32H, A ; 存放结果 END 本程序采用直接寻址方式传送数据进行两个操作数相加运算。 2. 分支程序 分支程序是根据程序中给定的条件进行判断,然后根据条件的“真”与“假”决定程序是否转移。 【例】 把片外RAM的首地址为10H开始存放的数据块,传送给片内RAM首地址为20H开始的数据块中去,如果数据为“0”,就停止传送。 程序如下: ORG 2000H MOV R0, #10H MOV R1, #20H LOOP: MOVX A, @R0 ; A←片外RAM数据 HERE: JZ HERE ; 数据=0终止,程序原地踏步 MOV @R1, A ; 片内RAM←A INC R0 INC R1 SJMP LOOP ; 循环传送 END 3. 循环程序 在程序执行过程中,当需要多次反复执行某段程序时,可采用循环程序。 循环程序一般由三部分组成: (1) 初始化。 (2) 循环体。 (3) 循环控制。 【例】 有20个数存放在内部RAM从41H开始的连续单元中,试求其和并将结果存放在40H单元(和数是一个8位二进制数,不考虑进位问题)。 程序流程图如图3-3所示。 程序如下: ORG 2000H MOV A, #00H ; 清累加器A MOV R7, #14H ; 建立循环计数器R7初值 MOV R0, #41H ; 建立内存数据指针 LOOP: ADD A, @R0 ; 累加 INC R0 ; 指向下一个内存单元 DJNZ R7, LOOP ; 修改循环计数器,判循环结束条件 MOV 40H, A ; 存累加结果于40H SJMP $ END 二 延时程序设计 【例】 较长时间的延时子程序,可以采用多重循环来实现。 利用CPU中每执行一条指令都有固定的时序这一特征,令其重复执行某些指令从而达到延时的目的。 子程序如下: 源程序 机

文档评论(0)

132****9295 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档