(单片机) 第4章.ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(单片机) 第4章

第4章 汇编语言程序设计 * * §1 汇编语言程序设计基础 一 伪指令 汇编语言语句一般分为指令性语句和指示性语句两类。 指令性语句是采用助记符构成的汇编语言语句,指令性语句在汇编时能产生与之对应的机器码,供CPU识别,从而执行相应的功能。 指示性语句又称伪指令语句。伪指令不是真正的指令,虽然与指令的形式类似,但在汇编时不产生供CPU执行的任何机器代码。伪指令是在机器汇编时供汇编程序识别和执行的命令,用于在汇编过程中对数据的存储环境或汇编实施一定的控制。 1 ORG 起始汇编伪指令 ORG 16位的地址或标号 汇编过程中,机器检测到该语句时,便确认了汇编的起始地址,然后把ORG伪指令下一条指令的首字节机器码存入16位的地址或标号所指示的存储单元内,其他的后续指令字节或数据连续依次存入后面的存储单元中。 例:ORG 1000H START:MOV A,#45H; 结果:(1000H)=74H,(1001H)=45H 2 END 汇编结束伪指令 END 汇编程序检测到该语句时,认为汇编语言源程序已经结束,END后面的指令语句将不被汇编成机器码。一个程序中包括主程序和若干个子程序,只能有一个END语句,它在所有程序单位的最末尾。 3 EQU 赋值伪指令 字符名 EQU 数据或汇编符 汇编过程中,EQU伪指令被汇编程序识别,然后自动将EQU后面的“数据或汇编符”赋给左边的“字符名”。 “字符名”必须先赋值后使用,因此EQU伪指令通常放在源程序的开头。 例: ORG 1000H KK EQU R0 H1 EQU 20H DISP EQU 0300H MOV R1,H1; MOV A,KK; … ACALL DISP … END 4 DATA 数据地址赋值伪指令 字符名 DATA 表达式 它用来给左边的“字符名”赋值。表达式可以是数据、地址,也可以是包含被定义的“字符名”在内的表达式,但不能是汇编符号,如R0-R7等。 DATA可放在源程序的开头或结尾,也可以放在程序的其他位置。 5 BIT 位地址赋值伪指令 字符名 BIT 位地址 将右边的位地址赋给左边的“字符名”,被定义后,“字符名”是一个符号位地址。 例:X1 BIT 30H 6 DB 定义字节伪指令 [标号]:DB 项或项表 把右边“项或项表”中的数据依次存入以左边标号地址起始的程序存储器中。“项或项表”可以是一个8位二进制数,也可以是一串8位二进制数。8位二进制数表示形式有:二、十、十六进制和ASCII等多种表示形式。 例:TABLE:DB 78H,100,‘9’ 7 DW 定义字伪指令 [标号]:DW 项或项表 DW与DB的功能类似,区别在于DB定义的是字节,DW定义的是字。DW经常被用来定义16位的地址,16位地址的存放顺序是高8位在前,低8位在后。 §2 MCS-51单片机汇编语言设计 一 简单程序设计 例:将30H内的两位压缩BCD码拆开,并转换成相应的ASCII码,存入两个RAM单元31H和32H中(低位存31H) 开始 保存30H内容 取低位 将低位变ASCII 取高位 将高位变ASCII 结束 ORG 1000H MOV R0,#30H; MOV SP,#50H; MOV A,@R0; PUSH ACC; ANL A,#0FH; ORL A,#30H; INC R0; MOV @R0,A; POP ACC; ANL A,#0F0H; SWAP A; ORL A,#30H; INC R0; MOV @R0,A; END MOV R0,#30H; MOV SP,#50H; MOV A,@R0; PUSH ACC; ORG 1000H ACALL CHANG; POP ACC; SWAP A; ACALL CHANG; SJMP $; CHANG:ANL A,#0FH; ORL A,#30H; INC R0; MOV @R0,A; RET END 例:三字节无符号数相加,其中一个加数在内部RAM的50H、51H和52H单元中(高位存于50H),另一个加数在内部RAM的53H、54H和55H中(高位存于53H),把相加之和存放在50H、51H和52H中,进位存放在位寻址区的00位中。 ORG 2000H MOV R0,#52H; MOV R1,#55H; MOV A,@R0; ADD A,@R1; MOV @R0,A; DEC R0; D

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档