
《第3章-MCS-51单片机指令系统-31指令系统简介32寻址方式》由会员分享,可在线阅读,更多相关《第3章-MCS-51单片机指令系统-31指令系统简介32寻址方式(38页珍藏版)》请在文档大全上搜索。
1、第第3 3章章 MCS - 51MCS - 51单片机指令系统单片机指令系统 3.1 3.1 指令系统简介指令系统简介3.2 3.2 寻址方式寻址方式本章内容本章内容p3.1 3.1 指令系统简介指令系统简介p3.2 3.2 寻址方式寻址方式p3.3 MCS-513.3 MCS-51的指令集的指令集p3.4 3.4 汇编语言程序的基本形式汇编语言程序的基本形式p3.5 3.5 汇编语言程序的基本结构汇编语言程序的基本结构程序框架程序框架1.ORG 0000H2. LJMP MAIN ;跳转至主程序跳转至主程序3.ORG 0003H4. LJMP INT0_INT ;跳转至外部中断跳转至外部中断
2、0的中断服务程序的中断服务程序5.ORG 000BH6. LJMP T0_INT ;跳转至定时器跳转至定时器0的中断服务程序的中断服务程序7.ORG 0013H8. LJMP INT1_INT ;跳转至外部中断跳转至外部中断1的中断服务程序的中断服务程序9.10.ORG 0030H11.MAIN: ;开始写主程序开始写主程序12. 13. END中断入口地址中断入口地址主程序开始主程序开始软件编程环境软件编程环境软件编程环境软件编程环境3.1 3.1 指令系统简介指令系统简介p指令:规定计算机进行某种操作的命令指令:规定计算机进行某种操作的命令p指令系统:指令集合指令系统:指令集合n不同系列的
3、机器,其指令系统不同不同系列的机器,其指令系统不同p指令编码指令编码n机器语言指令:机器语言指令:二进制数二进制数n汇编语言指令:汇编语言指令:助记符(英文缩写)助记符(英文缩写)3.1.1 MCS-513.1.1 MCS-51单片机指令单片机指令p111111条条p分类分类n按机器周期数按机器周期数p单、双、四单、双、四n按指令功能按指令功能p数据传送、算术运算、逻辑运算及移位、控数据传送、算术运算、逻辑运算及移位、控制转移、位操作制转移、位操作n按指令的字长分按指令的字长分p单字节、双字节、三字节单字节、双字节、三字节字节少的指令占用存储字节少的指令占用存储单元少,执行速度快单元少,执行速
4、度快3.1.2 3.1.2 指令的格式指令的格式 标号标号: : 操作码助记符操作码助记符 目的操作数目的操作数,源操作数源操作数 ; ;注释注释 NEXT: MOV A, #0A7H ;NEXT: MOV A, #0A7H ;立即数立即数0A7H0A7H送累加器送累加器A A常用的指令说明符号常用的指令说明符号符符 号号含含 义义RnRn表示当前选定寄存器组的工作寄存器表示当前选定寄存器组的工作寄存器R0R0R7R7,n=0n=07 7RiRi表示作为表示作为间接寻址间接寻址的地址指针的地址指针R0R0R1R1,i=0i=0,1 1#data#data表示表示8 8位立即数,即位立即数,即0
5、0H00HFFHFFH#datal6#datal6表示表示1616位立即数,即位立即数,即0000H0000HFFFFHFFFFHaddrl6addrl61616位地址,可表示用于位地址,可表示用于64K64K范围内寻址,用于范围内寻址,用于LCALLLCALL和和LJMPLJMP指令中(指令中(2 21616=64K=64K)addrlladdrll1111位地址,可表示位地址,可表示2K2K范围内寻址,用于范围内寻址,用于ACALLACALL和和AJMPAJMP指指令中(令中(2 21111=2K=2K)relrel带符号带符号的的8 8位地址偏移量位地址偏移量( (128128+127)
6、+127),用于,用于SJMPSJMP和条和条件转移指令中件转移指令中bitbit位寻址区的直接寻址位,表示位寻址区的直接寻址位,表示片内片内RAMRAM中可寻址中可寻址位位和和SFRSFR中的可寻址中的可寻址位位$ $当前指令所在地址当前指令所在地址DPTRDPTR数据指针数据指针 间接寻址寄存器或基址寄存器的前缀间接寻址寄存器或基址寄存器的前缀/ /加在位地址之前,表示该位先取反再参与运算,但加在位地址之前,表示该位先取反再参与运算,但不影响该不影响该位的值位的值directdirect8 8位直接地址,可以是内部位直接地址,可以是内部RAMRAM区的某一单元或某一专用区的某一单元或某一专
7、用功能寄存器的地址功能寄存器的地址(X)(X)X X地址单元中的内容,或地址单元中的内容,或X X作为间接寻址寄存器时所指单作为间接寻址寄存器时所指单元的内容元的内容(X)(X)由由X X寻址的单元的内容寻址的单元的内容将箭头后面的内容传送到箭头前面去将箭头后面的内容传送到箭头前面去3.1.3 3.1.3 指令的字节指令的字节 p(1)单字节指令)单字节指令n操作码和操作数加起来只有一个字节操作码和操作数加起来只有一个字节p(2)双字节指令)双字节指令n操作码和操作数各占一个字节操作码和操作数各占一个字节p(3)三字节指令)三字节指令n第一字节为操作码第一字节为操作码n第二、第三字节为操作数或
8、操作数地址第二、第三字节为操作数或操作数地址(1 1)单字节指令)单字节指令 (49(49条)条)p无操作数单字节指令无操作数单字节指令n指令中指令中只有只有操作码操作码字段字段,操作数操作数隐含隐含在操作码中在操作码中 n例:例:pINC AINC A; ;指令编码为指令编码为 04H04Hp含有操作数寄存器号的单字节指令含有操作数寄存器号的单字节指令 n指令码由指令码由操作码操作码字段字段和和指示操作数所在指示操作数所在寄存器号寄存器号的的字段字段组成组成 n例:例:pMOV AMOV A,RnRn ; ;指令编码为指令编码为 E8HE8HEFHEFH ALUATMPPSWPCIRID控制
9、器控制器ARB+1RAM地址锁存地址锁存RAMROM04HINC AINC A指令编码:指令编码:04H04H(2 2)双字节指令)双字节指令 (46(46条条) )p指令指令n操作码字节操作码字节在前在前;n在后在后的操作数字节可以是的操作数字节可以是立即数立即数,也可以是操,也可以是操作数所在片内作数所在片内RAMRAM的的地址地址。n例:例:pMOV AMOV A,#data ; #data ; 指令编码为指令编码为 74H data74H datapMOV AMOV A,dir ;dir ; 指令编码为指令编码为 E5H dirE5H dir ALUATMPPSWPCIRID控制器控制
10、器ARB+1RAM地址锁存地址锁存RAMROME5H35HFFH36H37H38H34H33H35H35HFFHMOV A, 35HMOV A, 35H指令编码:指令编码:E535HE535H(3 3)三字节指令)三字节指令 (16(16条条) )p指令指令n第一字节为操作码第一字节为操作码n第二、第三字节为操作数或操作数地址。分为第二、第三字节为操作数或操作数地址。分为4 4类类p1616位数据位数据MOV DPTRMOV DPTR,#26ABH#26ABHp8 8位地址和位地址和8 8位数据位数据MOV 74HMOV 74H,#0FFH#0FFHp8 8位数据和位数据和8 8位地址位地址C
11、JNE ACJNE A,#00#00,60H 60H p1616位地址位地址LCALL 2020HLCALL 2020H3.2 3.2 寻址方式寻址方式p寻找操作数的方式寻找操作数的方式p7 7种:种:n(1 1) 立即寻址立即寻址n(2 2) 直接寻址直接寻址n(3 3) 寄存器寻址寄存器寻址n(4 4) 寄存器间接寻址寄存器间接寻址n(5 5) 变址寻址变址寻址n(6 6) 相对寻址相对寻址n(7 7) 位寻址位寻址寻址方式寻址方式越多越多指令功能就指令功能就越强越强,灵活性,灵活性越大越大(1 1)立即寻址)立即寻址 例例1 MOV A,1 MOV A,3AH3AH 例例2 MOV DP
12、TR,2 MOV DPTR,1638H1638H ;A3AH A3AH ;DPTR1638HDPTR1638HMOV MOV 3AH, A3AH, A3AH16H38HMOV MOV 1638H1638H , DPTR, DPTR(2 2) 直接寻址直接寻址 例例 若(若(30H30H)= 0AAH,= 0AAH,执行指令执行指令MOV AMOV A,30H30H;(A)(30H) (A)(30H) 结果:(结果:(A A)= 0AAH= 0AAH0AAH注意:注意:直接寻址直接寻址可以访问可以访问 : : 内部数据存储器的内部数据存储器的低低 128 128 个字节单元个字节单元特殊功能寄存
13、器特殊功能寄存器特殊功能寄存器特殊功能寄存器只能用只能用直接寻址直接寻址方式进行访问方式进行访问A A、B B、DPTRDPTR?(3 3)寄存器寻址)寄存器寻址 例例 若(若(R0R0)= 0AAH= 0AAH,执行指令,执行指令MOV AMOV A,R0R0;A(R0) A(R0) 结果:结果:(A) = 0AAH(A) = 0AAH指令码为:指令码为:E8H 0AAH注意:注意:p可采用寄存器寻址的寄存器可采用寄存器寻址的寄存器nR0R0R7R7n累加器累加器 A ApINC AINC A; ;寄存器寻址寄存器寻址(机器码(机器码:04H:04H)pINC ACCINC ACC; ;直接
14、寻址(机器码直接寻址(机器码:05:05E0E0H H)pINC 0E0H INC 0E0H ; ;直接寻址(机器码直接寻址(机器码:05:05E0E0H H)n寄存器寄存器 B BpMUL AB MUL AB 和和 DIV ABDIV AB; ;寄存器寻址寄存器寻址pMOV B, #12HMOV B, #12H ; ;直接寻址(机器码直接寻址(机器码:75:75F0F012H12H)n数据指针数据指针 DPTRDPTRpINC DPTRINC DPTR和和 MOV DPTRMOV DPTR,#1234H#1234H ; ;寄存器寻址寄存器寻址特特有有指指令令(4 4) 寄存器间接寻址寄存器间
15、接寻址p使用规定使用规定n片内(片内(256B256B)RAM RAM 间接用间接用 RiRi(), ,即即pMOV AMOV A,R1 R1 或或 MOV AMOV A,R0R0n片外片外 64KB RAM64KB RAMp间接用间接用 DPTRDPTR,即,即 MOVX AMOVX A,DPTRDPTRp间接用间接用 RiRi,即,即 MOVX AMOVX A,R1R1 或或MOVX AMOVX A,R0R0 此时,此时,高高8 8位位地址由地址由P2P2提供,提供,低低8 8位位地址由地址由RiRi提供提供 例例1 1 若(若(R0R0)=0AAH=0AAH,(,(0AAH0AAH)=5
16、BH=5BH,执行指令,执行指令MOVMOVA A,R0 R0 ;A(R0)A(R0)结果:(结果:(A A)= 5BH= 5BH5BH 例例2 2 MOV DPTR MOV DPTR,#3456H #3456H ;DPTR 3456HDPTR 3456H 若(若(3456H3456H)=99H=99H,则,则MOVX AMOVX A,DPTR DPTR ;A A (DPTRDPTR);(A) = 99H(A) = 99H注意:注意:p寄存器寄存器间接间接寻址,寻址,不能不能用于对用于对 SFR 寻址寻址p堆栈操作(堆栈操作(PUSHPUSH,POPPOP)隐含为)隐含为SPSP间接寻址间接寻
17、址(5 5) 变址寻址变址寻址p3 3条条nMOVMOVC C A A,A+PC A+PC ;A ((A)+(PC)(A)+(PC))nMOVMOVC C A A,A+DPTR A+DPTR ;A ((A)+(DPTR)(A)+(DPTR))nJMP JMP A+DPTR A+DPTR ;PC (A)+(DPTR) (A)+(DPTR)p所用寄存器所用寄存器n基地址寄存器:基地址寄存器:DPTRDPTR、PCPCn累加器累加器A:预先预先存放存放被寻址操作数地址被寻址操作数地址相对相对基地址基地址的的偏移量偏移量p只能只能 访问访问 ROMROM取操作取操作数数获得程序的跳转获得程序的跳转地址
18、地址下一条下一条指令指令的的PC值值 例例1 1 若(若(A A)= 08H= 08H,(,(DPHDPH)= 20H= 20H,(,(DPLDPL)= 00H= 00H;执行:执行:MOVC AMOVC A,A+DPTRA+DPTR执行后:执行后:(A) = 88H(A) = 88H88H 例例22若(若(A A)=30H=30H,(,(1031H1031H)= 20H= 20H执行:执行:地址地址1000H1000H处的指令处的指令 1000H1000H:MOVC AMOVC A,A+PC A+PC 执行后:(执行后:(A A)= 20H= 20H20H 例例33若(若(A A)=08H=
19、08H,(DPTR)=2000H(DPTR)=2000H执行:执行:JMP A+DPTRJMP A+DPTR执行后:执行后:(PCPC)= 2008H= 2008H 程序从程序从 ROM ROM 地址地址 2008H 2008H 处开始执行处开始执行(6 6) 相对寻址相对寻址p操作操作n修改修改PC的值,实现程序的的值,实现程序的n转移的目的地址转移的目的地址p目的地址目的地址 转移指令下条指令地址转移指令下条指令地址( (PCPC的的当前当前值值) ) relrelp目的地址目的地址 转移指令地址转移指令地址 转移指令转移指令字节数字节数 relrelp其中其中relrel 带符号的带符号
20、的8 8位二进制数位二进制数 补码形式(补码形式(128128127127)等价等价等价等价在实际编程中,在实际编程中,“relrel” ” 通常用通常用标号标号代替代替rel 例例 已知已知 (PCPC)=2000H =2000H 执行如下指令执行如下指令地址地址 ORG 2000H ORG 2000H 指令码指令码2000H 2000H 200AH 80H 08H80H 08H2002H 2002H NOP NOP 00H 00H 200AH NOP NOP 00H00H结果:程序转移到结果:程序转移到200A200A处开始继续执行处开始继续执行(7 7) 位寻址位寻址p操作数:操作数:n
21、片内片内 RAMRAM 单元中的某一单元中的某一位位n只给出只给出位地址位地址,而,而不是不是字节地址字节地址p 例例 CLR ACC.0 CLR ACC.0 MOV 30HMOV 30H,C C ; 30H30H为片内为片内RAMRAM中的位地址中的位地址p可位寻址区为:可位寻址区为:n片内片内RAMRAM(共(共1616个字节,个字节,128128个位)个位)p字节地址:字节地址:20H20H2FH2FHp位地址:位地址:00H00H7FH7FH能被能被8 8整除整除的的SFRSFR的相应位地址的相应位地址可位寻址区可位寻址区回顾:片内回顾:片内RAMRAMp工作寄存器区:工作寄存器区:n
22、字节地址:字节地址:00H00H1FH1FHp位寻址区:位寻址区:n字节地址:字节地址:20H20H2FH2FHn位地址为:位地址为:00H00H7FH7FHp数据缓冲区数据缓冲区/ /堆栈区:堆栈区:n字节地址:字节地址:00H00H7FH7FHn一般使用一般使用30H30H7FH7FH可位寻址区可位寻址区回顾:特殊功能寄存器回顾:特殊功能寄存器SFRSFRp占用字节地址:占用字节地址:80H80HFFHFFHp位寻址寄存器:位寻址寄存器:n其字节地址可被其字节地址可被8 8整除整除p专用寄存器:专用寄存器:nA A、B B、PSWPSW、DPTRDPTR、SPSPpI/OI/O接口寄存器:
23、接口寄存器:nP0P0、P1P1、P2P2、P3P3、SBUFSBUF、TMODTMOD、TCONTCON、SCON SCON 位地址的表示方式,位地址的表示方式,4 4种种p 直接使用位地址直接使用位地址nMOV CMOV C,0D5H0D5HpPSWPSW的位的位5 5(位地址(位地址D5HD5H)的状态送进位标志位)的状态送进位标志位p 单元地址加位序号的形式单元地址加位序号的形式nMOV CMOV C,0D0H.50D0H.5pPSWPSW(单元地址(单元地址0D0H0D0H)的位)的位5 5(位地址(位地址D5HD5H)的状态送进位标志位)的状态送进位标志位p 特殊功能寄存器符号加位
24、序号的形式特殊功能寄存器符号加位序号的形式nMOV CMOV C,PSW.5PSW.5pPSWPSW的位的位5 5的状态送进位标志位的状态送进位标志位p 位名称表示形式位名称表示形式nMOV CMOV C,F0F0pPSWPSW的位的位5 5(位地址(位地址D5HD5H、位名称为、位名称为F0F0)的状态送进位标志位)的状态送进位标志位小结:小结:寻址方式和寻址空间寻址方式和寻址空间序号序号寻址方式寻址方式使用的变量使用的变量寻址空间寻址空间1 1立即寻址立即寻址ROMROM2 2直接寻址直接寻址(1)(1)内部内部RAMRAM的低的低128128字节;字节;(2)(2)特殊功能寄存器特殊功能
25、寄存器3 3寄存器寻址寄存器寻址R0R0R7R7、A A、B B、DPTRDPTR4 4寄存器间接寄存器间接寻址寻址R0R0、R1R1、SPSP内部内部RAMRAMR0R0、R1R1、DPTRDPTR外部外部RAMRAM5 5相对寻址相对寻址PC+PC+偏移量偏移量ROMROM6 6变址寻址变址寻址A+A+PCPC、A+A+DPTRDPTRROMROM7 7位寻址位寻址(1)(1)内部内部RAMRAM中的位寻址区;中的位寻址区;(2)(2)可位寻址的特殊功能寄存器位可位寻址的特殊功能寄存器位课本课本P51P51表表3-1 3-1 小结小结pMCS-51MCS-51单片机指令单片机指令n分类分类n格式格式n寻址方式寻址方式p作业:作业:P94P943.33.3p预习预习nMCSMCS5151单片机指令系统单片机指令系统指令集指令集