单片机控制技术与应用(刘靖)4详解.ppt

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4.1 汇编语言程序设计概述 (1)汇编语言的特点 ① 助记符指令和机器指令一一对应,所以用汇编;语言编写的程序效率高,占用存储空间小,运行速 度快,因此汇编语言能编写出最优化的程序。 ② 使用汇编语言编程比使用高级语言困难,因为 汇编语言是面向计算机的,汇编语言的程序设计 人员必须对计算机硬件有相当深入的了解。 ③ 汇编语言能直接访问存储器及接口电路,也能;处理中断,因此汇编语言程序能够直接管理和控 制硬件设备。 ④ 汇编语言缺乏通用性,程序不易移植,各种计算 机都有自己的汇编语言,不同计算机的汇编语言 之间不能通用;但是掌握了一种计算机系统的汇 编语言后,学习其他的汇编语言就不太困难了。;(2)汇编语言的语句格式 [标号]:操作码[操作数];[注释] (3)汇编语言程序设计的步骤 ① 建立数学模型。 ② 确定算法。;③ 制定程序流程图。 ④ 确定数据结构。 ⑤ 写出源程序。 ⑥ 上机调试程序。 4.2 伪指令;伪指令是程序员发给汇编程序的命令,也称为汇 编命令或汇编程序控制指令。 Cygnal常见汇编语言程序中常用的伪指令如 下。 (1)ORG (ORiGin) 汇编起始地址命令;   ????? 在汇编语言源程序的开始,通常都用一条ORG伪 指令来实现规定程序的起始地址。 在十字路口交通灯控制中,用ORG 0000H来开始 程序。;(2)END (END of assembly) 汇编终止命令    ????? 汇编语言源程序的结束标志,用于终止源程序的 汇编工作。在整个源程序中只能有一条END命 令,且位于程序的最后。;在十字路口交通灯控制中,用END来结束的程 序。 (3)EQU (EQUate) 赋值命令    ????? (4)DB (Define Byte) 定义字节命令;   ????? (5)DW (Define Word) 定义数据字命令    ????? (6)DS (Define Stonage ) 定义存储区命令    ?????;(7)BIT位定义命令    ????? (8)DATA数据地址赋值命令 ????? 4.3 单片机汇编语言程序的基本结构形式;(1)顺序程序 【例4-1】 三字节无符号数相加,其中被加数在 内部RAM的50H、51H和52H单元中,加数在内部 RAM的53H、5414和55H单元中,要求把相加之 和存放在50H、51H和52H单元中,进位存放在位 寻址区的00H位中。 ;? 其中: ① ? ② ? 在十字路口交通灯控制中,用到MOVR0,#0FFH,;MOVA,#01H等。 【例4-2】 从50个字节的无序表中查找一个关 键字“40H”。 ? (2)分支程序;① 单分支程序 【例4-3】 变量X存放在VAR单元内,函数值Y 存放在FUNC单元中,试按下式的要求给Y赋值: Y=???????; 本题的程序流程见图4-1(a)。 参考程序: ? ? ;图4-1 例4-3的分支流程图;这个程序也可以按图4-1(b)的流程图来编写,其特 征是先赋值,后比较判断,然后修改赋值并结束。 参考程序: ? ② 多分支程序;参见图4-2。 (3)循环程序 循环程序一般由4部分组成:;③ 循环修改,循环程序必须在一定条件下结束,否 则就要变成死循环; ④ 循环控制部分,根据循环结束条件,判断是否结 束循环。 以上4个部分可以有两种组织方式。;【例4-4】 从BLOCK单元开始存放一组无符号 数,一般称为一个数据块。数据块长度放在LEN 单元,编写一个求和程序,将和存入SUM单元,假 设和为不超过8位二进制数。 在置初值时,将数据块长度置入一个工作寄存器, 将数据块首地址送入另一个工作寄存器,一般称;它为数据块地址指针。每做一次加法之后,修改 地址指针,以便取出下一个数来相加,并且使计数 器减1。到计数器减到0时,求和结束,把和存入 SUM即可。 参考程序(各单元的地址是任意的): ?;以上程序在计数器初值不为零时是没有问题的, 但若是数据块的长度有可能为零,则将出现问 题。当R2初值为零,减1之后将为FFH,故要做256 次加法之后才会停止,显然和题意不符。若考虑 到这种情况,则可按下面的方式来编写程序,在做 加法之前,先判断一次R2的初值是否为零。整个 程序仍基本套用原来的形式。;? ? 其中:① CLR bit;清“0”bit位。 在十字路口交通灯控制中,用到CLR P2.4来熄灭 灯。;② ? 将源操作数(Rn或direct)减1,结果回送到Rn寄存 器或direct中去。如果结果不为0,则转移到标号 为rel的子程序中去。允许程序员把寄存器Rn或 内部RAM的direct单元用作程序循环计数器。主 要用于控制程序循环。以减1后是否为“0”作;为转移条件,即可实现按次数控制循环

文档评论(0)

过各自的生活 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档