单片机原理与应用-基于汇编、c51及混合编程第4章51内核单片机汇编语言程序设计

上传人:tian****1990 文档编号:72676980 上传时间:2019-01-23 格式:PPT 页数:140 大小:1.63MB
返回 下载 相关 举报
单片机原理与应用-基于汇编、c51及混合编程第4章51内核单片机汇编语言程序设计_第1页
第1页 / 共140页
单片机原理与应用-基于汇编、c51及混合编程第4章51内核单片机汇编语言程序设计_第2页
第2页 / 共140页
单片机原理与应用-基于汇编、c51及混合编程第4章51内核单片机汇编语言程序设计_第3页
第3页 / 共140页
单片机原理与应用-基于汇编、c51及混合编程第4章51内核单片机汇编语言程序设计_第4页
第4页 / 共140页
单片机原理与应用-基于汇编、c51及混合编程第4章51内核单片机汇编语言程序设计_第5页
第5页 / 共140页
点击查看更多>>
资源描述

《单片机原理与应用-基于汇编、c51及混合编程第4章51内核单片机汇编语言程序设计》由会员分享,可在线阅读,更多相关《单片机原理与应用-基于汇编、c51及混合编程第4章51内核单片机汇编语言程序设计(140页珍藏版)》请在金锄头文库上搜索。

1、1,第4章 51内核单片机汇编语言程序设计,4.1、汇编指令格式 4.2、寻址方式 4.3、指令系统 4.4、汇编程序常用伪指令 4.5、汇编语言程序设计,2,一、基本概念,指令使单片机完成基本操作的命令。 程序完成某项特定任务的指令的集合。,高级语言:,汇编语言:,机器语言:,程序设计语言:,用二进制代码表示指令和数据。,用助记符表示指令操作功能,用标号表示操作对象。,独立于机器,面向过程,接近自然语言和数学表达式。,第四章 51内核单片机汇编语言程序设计,3,汇编程序功能,源程序 (汇编指令程序),目标程序 (机器语言程序),汇编指令与机器码指令有一一对应的关系。 汇编程序是一种翻译程序,

2、将源程序翻译成目标程序。,(翻译),手工汇编 机器汇编 (常用),汇编的两种方式,4,关于机器汇编的说明,两次扫描过程。 第一次扫描:检查语法错误,确定符号名字; 建立使用的全部符号名字表; 每一符号名字后跟一对应值(地址或数)。 第二次扫描:在第一次扫描基础上,将符号地址转换成地 址(代真); 利用操作码表将助记符转换成相应的目标码。,5,源程序,目标程序,地址,ORG 1000H START:MOV R0,2FH MOV R2,#00H MOV A,R0 MOV R3,A INC R3 SJMP NEXT LOOP:INC R0 CJNE R0,#44H,NEXT INC R2 NEXT:

3、DJNZ R3,LOOP MOV 2AH,R2 SJMP $ END,第一次汇编,第二次汇编,1000 A82F 1002 7A00 1004 E6 1005 FB 1006 0B 1007 80NEXT 1009 08 100A B644NEXT 100D 0A 100E DBLOOP 1010 8A2A 1012 80FE,A82F 7A00 E6 FB 0B 8005 08 B64401 0A DBF9 8A2A 80FE,6,时间属性:指一条指令执行完毕所需要的时间 空间属性:指一条指令存储于程序存储器中所占的字节数 功能属性:指一条指令所对应的一个特定的操作功能,指令的三种属性,ST

4、C系列单片机采用了80C51内核,其指令集与MCS51系列单片机完全相同,本章介绍的指令系统可适用于所有51内核的单片机。,7,指令的构成 指令 = 操作码 + 操作数 操作码表示该指令所能执行的操作功能。 操作数表示参加操作的数的本身或操作数所在的地址。 汇编语言指令基本格式,标号:,操作码助记符,目的操作数,,源操作数,;注释,4.1 汇编指令格式,8,描述符号: Rn 工作寄存器R0 R7 Ri 间接寻址寄存器R0、R1 Direct 直接地址,包括内部128B RAM单元地址、 所有SFR地址。 #data 8位立即数 #data 16 16位立即数 addr 16 16位目的地址 a

5、ddr 11 11位目的地址 rel 用补码表示的 8位相对偏移量 bit 可直接位寻址的位,9,/ bit 指定位求反,再参与逻辑操作,但取反后不影 响该位的原值 (x) x中的内容 (x) x中的地址中的内容 表示操作流程,将箭尾一方内容送入箭头所指 一方的单元中去 当前指令地址,10,4.2 寻址方式,寻址方式寻找操作数或寻找操作数所在存储 单元地址的方式 共七种寻址方式:,寄存器寻址,直接寻址,立即数寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,必须掌握,11,操作数以常数的形式直接出现在指令中,用“#”作前缀; 该常数与操作码一起存放在ROM中,可以立即得到并执行。 例如:MOV

6、 A,#52H,74H,A,立即数,操作码,程序存储器,PC+1,PC,52H,4.2.1 立即(数)寻址,52H,12,例如:MOV DPTR, #5678H DPTR由两个特殊功能寄存器DPH和DPL组成,90H,PC,PC+1,PC+2,操作码,低位立即数,高位立即数,程序存储器,SFR,DPL,DPH,注意:1.只有源操作数能使用立即寻址方式。 2.立即数长度必须小于或等于目的操作数的长度。,13,操作数存放在R0 R7、A或DPTR中; B寄存器在乘、除法指令中是寄存器寻址,在数据传送指令 中是直接寻址。 其他SFR的寻址方式不属于寄存器寻址。 例如:MOV A,R5,4.2.2 寄

7、存器寻址,101,PC,操作码,程序存储器,内部RAM,R5,A,XX,XX,R6,R7,11101,14,指令中直接给出操作数的地址,数据存放在该地址对应的存 储单元中。 直接寻址方式可以访问的范围:,4.2.3 直接寻址,片内RAM低128B单元(00H7FH) SFR(既可用单元地址形式给出,也可用寄存器符号的形式给出),注意:直接寻址方式是访问特殊功能寄存器的唯一方法。,15,MOV P0,A (P0代表符号地址,是直接寻址方式),例如:MOV A,63H,4.2.3 直接寻址,74H,63H,PC,PC+1,操作码,直接地址,程序存储器,内部RAM,63H,A,XX,MOV 80H,

8、A,XX,16,可用作地址指针的工作寄存器是R0、R1,以及DPTR 例如:MOV A, R1; A(R1),PC,操作码,程序存储器,内部RAM,A,1110011,4.2.4 寄存器间接寻址,指令中寄存器的内容作为操作数存放的地址 间接寻址寄存器前用“”表示前缀,1,R1,30H,30H,58H,58H,17,使用该方式访问数据存储器时注意: 访问片内RAM只能用R0和R1作指针; 若片内扩展RAM或片外RAM仅有256B单元时,既可以用R0或R1作指针间接访问,也可用DPTR作指针间接访问;大于256B时只能以DPTR作指针间接访问。,18,操作数地址 = 变地址 + 基地址 基地址寄存

9、器: DPTR 或 PC ; 变址寄存器: A 该寻址方式常用于访问程序存储器,查表。 例如:MOVC A,A + DPTR,PC,操作码,程序存储器,SFR,32H,A5H,4.2.5 变址寻址,10010011,32A5H,32A5H,A,23H,+23H=32C8H,32C8H,2FH,2FH,设DPTR=32A5H,A=23H,19,用于相对转移指令中 以当前PC值作为基地址,与指令中给定的相对偏移量rel相加, 以所得之和作为目的位置的地址 当前PC值 源地址转移指令所占的字节数 (实际上是转移指令的下一条指令的地址) rel:以补码表示的有符号单字节数(-128127),负数表示从

10、当前地址向下转移,正数表示从当前地址向上转移。,4.2.6 相对寻址,20,PC,操作码,程序存储器,PC,2050H,PC+1,2051H,PC+2,偏移量,rel=08H,例如:JZ 08H ; rel为正数,从当前地址向上转移 当A=0时, PCPC+2+rel /转移 当A0时,PCPC+2 /程序顺序执行,2052H,205AH,2052H,08H,+08H=,205AH,XX,2052H,60H,21,PC,操作码,程序存储器,PC,2050H,PC+1,2051H,PC+2,偏移量,rel=F4H,例如:JZ F4H ; rel为负数,从当前地址向下转移 当A=0时, PCPC+

11、2+rel /转移 当A0时,PCPC+2 /程序顺序执行,2052H,2046H,2052H,F4H,+FFF4H=,2046H,XX,2052H,60H,22,操作数是二进制位 在指令中直接给出位地址,利用位处理器对某一位进行数据 传送、逻辑运算等操作 例如:MOV C, 07H; C(07H),PC,操作码,程序存储器,C,20H,00,PC+1,PSW,SFR,X,4.2.7 位寻址,07H,07,X,A2H,23,两种位寻址区: (1)内部RAM中的位寻址区:字节地址为20H2FH; (2)SFR的可寻址位。 位地址的几种表示方法: 1)直接使用位地址;如:PSW的位6可表示为0D6

12、H 2)字节地址带位号; 或0D0H.6 3)SFR名带位号; 或PSW.6 4)位符号地址表示; 或AC,24,数据传送指令共29条, 包括:普通传送指令、数据交换指令和堆栈操作指令,程序存储器 ROM,特殊功能寄存器 SFR,片内RAM 128字节,扩展数据存储器 RAM,MOVC,MOVX,MOV PUSH POP XCH XCHD,4.3 指令系统,4.3.1 数据传送指令,注意:该类指令只有以A为目的操作数的指令影响PSW中的P标志位,其它数据传送指令对各标志位无影响。,25,回忆操作数描述符:direct,Rn,Ri,#data,DPTR等。 1)以A为目的操作数的传送指令 MOV

13、 A,#data MOV A,direct MOV A,Rn MOV A,Ri,MOV Rn,#data MOV Rn,direct MOV Rn,A,1、普通传送指令 片内RAM传送指令MOV,;A(Rn),;Adata,;A(direct),;A(Ri),2)以Rn为目的操作数的传送指令,;Rn A,;Rndata,;Rn (direct),26,MOV direct,Rn MOV direct,Ri 4)以Ri为目的操作数的传送指令 MOV Ri,#data ;(Ri) data MOV Ri,direct ;(Ri)(direct) MOV Ri,A ;(Ri)() MOV DPTR,

14、#data16 ;唯一的16位数据传送指令。,(direct) (A),MOV direct,A ;,3)以direct为目的操作数的传送指令,MOV direct,#data,(direct) data,MOV direct,direct,(direct) (direct),(direct) (Rn),(direct) (Ri),5)以DPTR为目的操作数的传送指令,27,MOV Rn,Rn MOV Ri, Ri MOV Rn, Ri MOV #data, A,注意: 1)在数据传送指令中目的操作数和源操作数中不能 同时出现工作寄存器。 2)SFR只能用直接寻址方式访问。 3)片内RAM高1

15、28B(80H-FFH)只能用寄存器间 接寻址方式访问。,【例4-1】写出将R0的内容送到R5中的程序段。 MOV A,R0 MOV R5,A,28,扩展数据存储器传送指令 对片内扩展RAM或片外扩展RAM及外部接口电路进行数 据传送的相关指令: MOVX A,Ri MOVX A,DPTR MOVX Ri,A MOVX DPTR,A 执行过程中会使/WR、/RD有效。,;A(Ri),;A(DPTR),; (Ri) A,; (DPTR) A,(读) (读) (写) (写),注意: 1)通过DPTR间接寻址,可以对整个64KB片外RAM访问。 2)通过Ri间接寻址,只能对扩展RAM的低256字节访问, 如果地址范围大于256B时,应谨防地址冲突。,29,【例4-2】试编写一程

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号