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