51内核单片机汇编语言程序设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《51内核单片机汇编语言程序设计课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 内核 单片机 汇编语言 程序设计 课件
- 资源描述:
-
1、12第第4章章 51内核单片机汇编语言程序设计内核单片机汇编语言程序设计4.1、汇编指令格式、汇编指令格式4.2、寻址方式、寻址方式4.3、指令系统、指令系统4.4、汇编程序常用伪指令、汇编程序常用伪指令4.5、汇编语言程序设计、汇编语言程序设计3一、基本概念一、基本概念 指令指令使单片机完成基本操作的命令。使单片机完成基本操作的命令。程序程序完成某项特定任务的指令的集合。完成某项特定任务的指令的集合。高级语言高级语言:汇编语言汇编语言:机器语言机器语言:程序设计语言:程序设计语言:用二进制代码表示指令和数据。用二进制代码表示指令和数据。用助记符表示指令操作功能,用标号表示操作对象。用助记符表
2、示指令操作功能,用标号表示操作对象。独立于机器独立于机器,面向过程面向过程,接近自然语言和数学表达式。接近自然语言和数学表达式。第四章第四章 51内核单片机汇编语言程序设计内核单片机汇编语言程序设计4 汇编程序功能汇编程序功能 源程序源程序 (汇编指令程序)(汇编指令程序)汇编汇编 目标程序目标程序(机器语言程序)(机器语言程序)汇编指令与机器码指令有一一对应的关系。汇编指令与机器码指令有一一对应的关系。汇编程序是一种翻译程序,将源程序翻译成目标程序。汇编程序是一种翻译程序,将源程序翻译成目标程序。(翻译)(翻译)手工汇编手工汇编 机器汇编机器汇编(常用)(常用)汇编的两种方式汇编的两种方式
3、5 关于机器汇编的说明关于机器汇编的说明两次扫描过程。两次扫描过程。第一次扫描:第一次扫描:检查语法错误,确定符号名字;检查语法错误,确定符号名字;建立使用的全部符号名字表;建立使用的全部符号名字表;每一符号名字后跟一对应值(地址或数)。每一符号名字后跟一对应值(地址或数)。第二次扫描:第二次扫描:在第一次扫描基础上,将符号地址转换成地在第一次扫描基础上,将符号地址转换成地 址(代真);址(代真);利用操作码表将助记符转换成相应的目标码。利用操作码表将助记符转换成相应的目标码。6源程序源程序 目标程序目标程序 地址地址 ORG 1000HORG 1000HSTARTSTART:MOV R0MO
4、V R0,2FH 2FH MOV R2 MOV R2,#00H#00H MOV A MOV A,R0 R0 MOV R3 MOV R3,A A INC R3 INC R3 SJMP SJMP NEXT NEXT LOOPLOOP:INC R0 INC R0 CJNE R0 CJNE R0,#44H#44H,NEXTNEXT INC R2 INC R2 NEXTNEXT:DJNZ R3DJNZ R3,LOOPLOOP MOV MOV 2AH2AH,R2 R2 SJMP$SJMP$END END 第一次汇编第一次汇编第二次汇编第二次汇编1000 A82F1002 7A001004 E61005 F
5、B1006 0B1007 80NEXT1009 08100A B644NEXT100D 0A100E DBLOOP1010 8A2A1012 80FEA82F7A00E6FB0B800508B644010ADBF98A2A80FE7 时间属性:指一条指令执行完毕所需要的时间时间属性:指一条指令执行完毕所需要的时间 空间属性:指一条指令存储于程序存储器中所占的字节数空间属性:指一条指令存储于程序存储器中所占的字节数 功能属性:指一条指令所对应的一个特定的操作功能功能属性:指一条指令所对应的一个特定的操作功能 指令的三种属性指令的三种属性 STC STC系列单片机采用了系列单片机采用了80C518
6、0C51内核,其指令集与内核,其指令集与MCSMCS5151系列单片机完全相同,本章介绍的指令系系列单片机完全相同,本章介绍的指令系统可适用于所有统可适用于所有5151内核的单片机。内核的单片机。8 指令的构成指令的构成 指令指令=操作码操作码+操作数操作数 操作码操作码表示该指令所能执行的操作功能。表示该指令所能执行的操作功能。操作数操作数表示参加操作的数的本身或操作数所在的地址。表示参加操作的数的本身或操作数所在的地址。汇编语言指令基本格式汇编语言指令基本格式标号:标号:操作码助记符操作码助记符 目的操作数目的操作数,源操作数,源操作数;注释;注释4.1 汇编指令格式汇编指令格式9 描述符
7、号描述符号:Rn 工作寄存器工作寄存器R0 R7 Ri 间接寻址寄存器间接寻址寄存器R0、R1 Direct 直接地址,包括内部直接地址,包括内部128B RAM单元地址、单元地址、所有所有SFR地址。地址。#data 8位立即数位立即数#data 16 16位立即数位立即数 addr 16 16位目的地址位目的地址 addr 11 11位目的地址位目的地址 rel 用补码表示的用补码表示的 8位相对偏移量位相对偏移量 bit 可直接位寻址的位可直接位寻址的位 10 /bit 指定位求反,再参与逻辑操作,但取反后不影指定位求反,再参与逻辑操作,但取反后不影 响该位的原值响该位的原值 (x)x中
8、的内容中的内容(x)x中的地址中的内容中的地址中的内容 表示操作流程,将箭尾一方内容送入箭头所指表示操作流程,将箭尾一方内容送入箭头所指 一方的单元中去一方的单元中去 当前指令地址当前指令地址 114.2 寻址方式寻址方式 寻址方式寻址方式寻找操作数或寻找操作数所在存储寻找操作数或寻找操作数所在存储 单元地址的方式单元地址的方式 共七种寻址方式:共七种寻址方式:寄存器寻址寄存器寻址直接寻址直接寻址立即数寻址立即数寻址寄存器间接寻址寄存器间接寻址变址寻址变址寻址相对寻址相对寻址位寻址位寻址必须掌握必须掌握12 操作数以常数的形式直接出现在指令中,操作数以常数的形式直接出现在指令中,用用“#”作前
9、缀;作前缀;该常数与操作码一起存放在该常数与操作码一起存放在ROM中,可以立即得到并执行。中,可以立即得到并执行。例如:例如:MOV A,#52H74HA 立即数立即数操作码操作码程序存储器程序存储器PC+1PC52H4.2.1 立即(数)寻址立即(数)寻址52H13 例如:例如:MOV DPTR,#5678H DPTR由由两个两个特殊功能寄存器特殊功能寄存器DPH和和DPL组成组成90H56H78H56H78HPCPC+1PC+2操作码操作码低位立即数低位立即数高位立即数高位立即数程序存储器程序存储器SFRDPLDPH 注意:注意:1.1.只有源操作数只有源操作数能使用立即寻址方式。能使用立
10、即寻址方式。2.2.立即数长度必须立即数长度必须小于或等于小于或等于目的操作数的长度。目的操作数的长度。14 操作数存放在操作数存放在R0 R7、A或或DPTR中;中;B寄存器在乘、除法指令中是寄存器寻址,在数据传送指令寄存器在乘、除法指令中是寄存器寻址,在数据传送指令 中是直接寻址。中是直接寻址。其他其他SFR的寻址方式不属于寄存器寻址。的寻址方式不属于寄存器寻址。例如:例如:MOV A,R54.2.2 寄存器寻址寄存器寻址101PC操作码操作码程序存储器程序存储器内部内部RAMR5AXXXXR6R71110115 指令中直接给出操作数的地址,数据存放在该地址对应的存指令中直接给出操作数的地
11、址,数据存放在该地址对应的存 储单元中。储单元中。直接寻址方式可以访问的范围:直接寻址方式可以访问的范围:4.2.3 直接寻址直接寻址 片内片内RAM低低128B单元(单元(00H7FH)SFR(既可用单元地址形式给出,也可用寄存器符号(既可用单元地址形式给出,也可用寄存器符号的形式给出)的形式给出)注意:注意:直接寻址方式是访问特殊功能寄存器的唯一方法。直接寻址方式是访问特殊功能寄存器的唯一方法。16 MOV P0,A (P0代表符号地址,是直接寻址方式)代表符号地址,是直接寻址方式)例如:例如:MOV A,63H4.2.3 直接寻址直接寻址74H63HPCPC+1操作码操作码直接地址直接地
12、址程序存储器程序存储器内部内部RAM63HAXXMOV 80H,A XX17可用作地址指针的工作寄存器是可用作地址指针的工作寄存器是R0、R1,以及,以及DPTR例如:例如:MOV A,R1;A(R1)PC操作码操作码程序存储器程序存储器内部内部RAMA11100114.2.4 寄存器间接寻址寄存器间接寻址 指令中寄存器的内容作为指令中寄存器的内容作为操作数存放的地址操作数存放的地址 间接寻址寄存器前间接寻址寄存器前用用“”表示前缀表示前缀1R130H30H58H58H18 使用该方式访问数据存储器时注意使用该方式访问数据存储器时注意:访问片内访问片内RAM只能用只能用R0和和R1作指针;作指
13、针;若片内扩展若片内扩展RAM或片外或片外RAM仅有仅有256B单元时单元时,既可以,既可以用用R0或或R1作指针间接访问,也可用作指针间接访问,也可用DPTR作指针间接访问;作指针间接访问;大于大于256B时只能以时只能以DPTR作指针间接访问。作指针间接访问。19 操作数地址操作数地址=变地址变地址+基地址基地址 基地址寄存器基地址寄存器:DPTR 或或 PC;变址寄存器变址寄存器:A 该寻址方式常用于访问该寻址方式常用于访问程序存储器程序存储器,查表查表。例如:例如:MOVC A,A+DPTRPC操作码操作码程序存储器程序存储器SFR32HALUA5H4.2.5 变址寻址变址寻址1001
14、0011DPHDPL32A5H32A5HA23H+23H=32C8H32C8H2FH2FH设设DPTR=32A5H,A=23H20 用于相对转移指令中用于相对转移指令中 以以当前当前PC值值作为基地址,与指令中给定的相对偏移量作为基地址,与指令中给定的相对偏移量rel相加,相加,以所得之和作为目的位置的地址以所得之和作为目的位置的地址 当前当前PC值值 源地址源地址转移指令所占的字节数转移指令所占的字节数 (实际上是转移指令的下一条指令的地址)(实际上是转移指令的下一条指令的地址)rel:以补码表示的有符号单字节数(以补码表示的有符号单字节数(-128127),负数表示从),负数表示从当前地址
15、向下转移,正数表示从当前地址向上转移。当前地址向下转移,正数表示从当前地址向上转移。4.2.6 相对寻址相对寻址21PC操作码操作码程序存储器程序存储器PCALU2050HPC+12051HPC+2偏移量偏移量rel=08H 例如:例如:JZ 08H;rel为正数,从当前地址向上转移为正数,从当前地址向上转移 当当A=0时,时,PCPC+2+rel/转移转移 当当A0时,时,PCPC+2/程序顺序执行程序顺序执行2052H205AH2052H08H+08H=205AHPC205AHXX2052H60H22PC操作码操作码程序存储器程序存储器PCALU2050HPC+12051HPC+2偏移量偏
16、移量rel=F4H 例如:例如:JZ F4H;rel为负数,从当前地址向下转移为负数,从当前地址向下转移 当当A=0时,时,PCPC+2+rel/转移转移 当当A0时,时,PCPC+2/程序顺序执行程序顺序执行2052H2046H2052HF4H+FFF4H=2046HPC2046HXX2052H60H23 操作数是二进制位操作数是二进制位 在指令中直接给出位地址,利用位处理器对某一位进行在指令中直接给出位地址,利用位处理器对某一位进行数据数据 传送、逻辑运算传送、逻辑运算等操作等操作 例如:例如:MOV C,07H;C(07H)PC操作码操作码程序存储器程序存储器C20H00PC+1PSWS
17、FRX4.2.7 位寻址位寻址07H07XA2H24 两种位寻址区:两种位寻址区:(1 1)内部)内部RAM中的位寻址区:字节地址为中的位寻址区:字节地址为20H2FH;(2 2)SFR的可寻址位。的可寻址位。位地址的几种表示方法:位地址的几种表示方法:1 1)直接使用位地址;如:)直接使用位地址;如:PSW的位的位6可表示为可表示为0D6H 2 2)字节地址带位号;)字节地址带位号;或或0D0H.6 3 3)SFR名带位号;名带位号;或或PSW.6 4 4)位符号地址表示;)位符号地址表示;或或AC 25数据传送指令共数据传送指令共29条,条,包括:包括:普通传送指令普通传送指令、数据交换指
18、令数据交换指令和和堆栈操作指令堆栈操作指令程序存程序存储器储器ROM特殊功能特殊功能寄存器寄存器 SFR片内片内RAM128字节字节扩展数扩展数据存储据存储器器RAMMOVCMOVXMOV PUSHPOPXCHXCHD4.3 指令系统指令系统4.3.1 数据传送指令数据传送指令注意:注意:该类指令只有以该类指令只有以A为目的操作数的指令影响为目的操作数的指令影响PSW中的中的P标志位,其它数据传送指令对各标志位无影响。标志位,其它数据传送指令对各标志位无影响。26回忆操作数描述符:回忆操作数描述符:direct,Rn,Ri,#data,DPTR等。等。1)以以A为目的操作数的传送指令为目的操作
19、数的传送指令MOV A,#dataMOV A,directMOV A,RnMOV A,RiMOV Rn,#dataMOV Rn,directMOV Rn,A1 1、普通传送指令、普通传送指令片内片内RAM传送指令传送指令MOV;A(Rn);Adata;A(direct);A(Ri)2)以以Rn为目的操作数的传送指令为目的操作数的传送指令;Rn A;Rndata;Rn(direct)27MOV direct,RnMOV direct,Ri4)以以Ri为目的操作数的传送指令为目的操作数的传送指令MOV Ri,#data ;(;(Ri)dataMOV Ri,direct ;(;(Ri)(direct
20、)MOV Ri,A ;(;(Ri)()()MOV DPTR,#data16 ;唯一的唯一的16位数据传送指令。位数据传送指令。(direct)(A)MOV direct,A ;3)以以direct为目的操作数的传送指令为目的操作数的传送指令MOV direct,#data(direct)dataMOV direct,direct(direct)(direct)(direct)(Rn)(direct)(Ri)5)以以DPTR为目的操作数的传送指令为目的操作数的传送指令28 MOV Rn,Rn MOV Ri,Ri MOV Rn,Ri MOV#data,A 注意:注意:1 1)在数据传送指令中目的操
21、作数和源操作数中不能)在数据传送指令中目的操作数和源操作数中不能 同时出现工作寄存器。同时出现工作寄存器。2 2)SFR只能用直接寻址方式访问。只能用直接寻址方式访问。3 3)片内)片内RAM高高128B(80H-FFH)只能用寄存器间只能用寄存器间 接寻址方式访问。接寻址方式访问。【例例4-1】写出将写出将R0的内容送到的内容送到R5中的程序段。中的程序段。MOV A,R0MOV R5,A29扩展数据存储器扩展数据存储器传送指令传送指令 对对片内扩展片内扩展RAM或或片外扩展片外扩展RAM及及外部接口电路外部接口电路进行数进行数 据传送的相关指令:据传送的相关指令:MOVX A,Ri MOV
22、X A,DPTR MOVX Ri,A MOVX DPTR,A 执行过程中会使执行过程中会使/WR、/RD有效。有效。;A(Ri);A(DPTR);(Ri)A;(DPTR)A(读)(读)(读)(读)(写)(写)(写)(写)注意:注意:1 1)通过)通过DPTR间接寻址,可以对整个间接寻址,可以对整个64KB片外片外RAM访问。访问。2 2)通过通过Ri间接寻址,只能对扩展间接寻址,只能对扩展RAM的低的低256字节访问,字节访问,如果地址范围大于如果地址范围大于256B时,应谨防地址冲突。时,应谨防地址冲突。30【例例4-2】试编写一试编写一程序段,实现将片外程序段,实现将片外RAM 地址为地址
23、为01E0H开始的开始的16个单元中的个单元中的内容传送到片内扩展内容传送到片内扩展RAM 地址为地址为04FFH开始的单元中。开始的单元中。参考程序为:参考程序为:MOV R2,#10HMOV P2,#01HMOV R0,#0E0HMOV DPTR,#04FFH LOOP:ORL AUXR,#00000010BMOVX A,R0ANL AUXR,#11111101BMOVX DPTR,A INCR0INCDPTRDJNZ R2,LOOPD7D6D5D4D3D2D1D0T0 x12T1x12 UART_M0 x6BRTR S2SMODBRTx12EXTRAM S1BRSEXTRAM=1时,访问
24、片时,访问片外扩展外扩展RAM31程序存储器传送指令程序存储器传送指令MOVC(查表指令)(查表指令)MOVC A,A+DPTR MOVC A,A+PC MOVC 含义是传送常数。含义是传送常数。(A)+(DPTR)或或PC当前值当前值=一个一个16位的地址位的地址,将该,将该ROM地址中地址中的内容的内容传送给传送给 A。以以DPTR为基地址的指令,可在为基地址的指令,可在ROM的的64KB范围内查范围内查 表;(常用)表;(常用)以以PC为基地址的指令只能在为基地址的指令只能在(PC)+1为基点的为基点的256B范范 围内查表;(不推荐)围内查表;(不推荐)使用第一条指令前,需事先将表首地
25、址存入使用第一条指令前,需事先将表首地址存入DPTR中,中,相对于表首偏移量存入相对于表首偏移量存入A寄存器中。寄存器中。32例如例如:(A)=30H,当前地址当前地址1000HMOVC A,A+PC;A(?H)例如例如:ORG 8000HMOV A,#30H MOVC A,A+PC;A(?H)ORG 8030HDB 41H,42H,43H,44H,45H例如例如:(DPTR)=8100H,(A)=40H MOVCA,A+DPTR;A(?H)80331031阅读以下三个程序段阅读以下三个程序段,并回答并回答?的内容。的内容。814033【例例4-3】将将ROM 02FFH单元的内容送片内单元的
展开阅读全文