- 1、本文档共55页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机原理,接口及应用一一一第3章 MCS一51单片机汇编语言程序设计
单片机原理、接口及应用---嵌入式系统技术基础 第3章 MCS-51单片机汇编语言程序设计 3.1 汇编语言程序设计概述 3.1.1 机器语言、汇编语言和高级语言 用于程序设计的语言基本上分为3种:机器语言、汇编语言和高级语言。 1.机器语言 二进制代码表示的指令、数字和符号简称为机器语言 不易懂,难记忆,易出错。 2.汇编语言 英文助记符表示的指令称为符号语言或汇编语言 将汇编语言程序转换成为二进制代码表示的机器语言程序称为汇编程序 经汇编程序“汇编(翻译)”得到的机器语言程序称为目标程序,原来的汇编语言程序称为源程序。 3.高级语言 不受具体机器的限制,使用了许多数学公式和数学计算上的习惯用语,非常擅长于科学计算。常用的如BASIC、FORTRAN以及C语言等。 高级语言优点:通用性强,直观、易懂、易学,可读性好。 使用C语言(C51)、PL/M语言来进行MCS-51的应用程序设计。 对于程序的空间和时间要求很高的场合,汇编语言仍是必不可缺的。 汇编语言与高级语言相比具有以下优点: 1)占用的内存单元和CPU资源少 (2)程序简短,执行速度快 (3)可直接调用计算机的全部资源,并可有效地利用计算机的专有特性 (4)能难确地掌握指令的执行时间,适用于实时控制系统。 3.2.2 伪指令 常用的伪指令: 1.ORG(ORiGin)汇编起始地址命令 在汇编语言源程序的开始,通常都用一条ORG伪指令来实现规定程序的起始地址。如不用ORG规定,则汇编得到的目标程序将从0000H开始。例如: ORG 3000H START:MOV A,#7AH 这段程序汇编后目标代码在存储器中存放的起始地址是3000H。 在一个源程序中,可多次使用ORG指令,来规定不同的程序段的起始地址。但是,地址必须由小到大排列,地址不能交叉、重叠。例如: ORG 2000H ┇ ORG 2500H ┇ ORG 3000H ┇ 2. END(END of assembly)汇编终止命令 汇编语言源程序的结束标志,用于终止源程序的汇编工作。在整个源程序中只能有一条END命令,且位于程序的最后。 (其后即使还有指令,汇编程序也不作处理) 3.DB(Define Byte)定义字节命令 在程序存储器的连续单元中定义字节数据。 DB功能是从指定单元开始定义(存储)若干个字节,10进制数自然转换成16进制数,字母按ASCII码存储。 4.DW(Define Word)定义数据字命令 从指定的地址开始,在程序存储器的连续单元中定义16位的数据字。存放时高8位在前,低8位在后.例如: ORG 2000H DW 1246H,7BH,10 汇编后: (2000H)=12H ;第1个字 (2001H)=46H (2002H)=00H ;第2个字 (2003H)=7BH (2004H)=00H ;第3个字(2005H)=0AH (2005H)=0AH 7.EQU(EQUate)赋值命令 字符名称 EQU 项(数或汇编符号) 用于给标号赋值。赋值以后,其标号值在整个程序有效。 用EQU赋过值的符号名可以用作数据地址、代码地址、位地址或是一个立即数。例如: TEST EQU 2000H 表示标号TEST=2000H,在汇编时,凡是遇到标号TEST时,均以2000H来代替。 8.DATA数据地址赋值伪指令 字符名称 DATA 表达式 [例2] 设在BLOCK和BLOCK+1单元中有两个补码形式的带符号数。请编出求两数之和,并把它放在SUM和SUM+1单元(低8位在SUM单元)的子程序。 解:在两个8位二进制带符号数相加时,其和很可能会超过8位数能表示的范围而需要采用16位数形式来表示,因此,在进行加法时,可以预先把这两个加数扩张成16位二进制补码形式,然后对它完成双字节相加。例如:加数和被加数皆为-98 (98的源码为62H,-98的补码为9EH)时, 扩张成16位二进制形式后相加的算式为: -98 1 1 1 1 1 1 1 1 , 1 0 0 1 1 1 1 0 B +) -98 1 1 1 1 1 1 1 1 , 1 0 0 1 1 1 1 0 B -196 1 1 1 1 1 1 1 1 , 0 0 1 1 1 1 0 0 B 最高进位位丢失不计,换算成真值显然也是-196,结果是正确的。 因此,
文档评论(0)