
《第3章-MCS-51单片机指令系统-32寻址方式(2)》由会员分享,可在线阅读,更多相关《第3章-MCS-51单片机指令系统-32寻址方式(2)(35页珍藏版)》请在文档大全上搜索。
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单字节、双字节、三字节单字节、双字节、三字节字节少的指令占用存储字节少的指令占用存储单元少,执行速度快单元少,执行速度快3.1.2 3.1.
4、2 指令的格式指令的格式 标号标号: : 操作码助记符操作码助记符 目的操作数目的操作数,源操作数源操作数 ; ;注释注释 NEXT: MOV A, #0A7H ;NEXT: MOV A, #0A7H ;立即数立即数0A7H0A7H送累加器送累加器A A3.1.3 3.1.3 指令的字节指令的字节 p(1)单字节指令)单字节指令n操作码和操作数加起来只有一个字节操作码和操作数加起来只有一个字节p(2)双字节指令)双字节指令n操作码和操作数各占一个字节操作码和操作数各占一个字节p(3)三字节指令)三字节指令n第一字节为操作码第一字节为操作码n第二、第三字节为操作数或操作数地址第二、第三字节为操作
5、数或操作数地址(1 1)单字节指令)单字节指令 (49(49条)条)p无操作数单字节指令无操作数单字节指令n指令中指令中只有只有操作码操作码字段,字段,操作数操作数隐含隐含在操作码中在操作码中 n例:例:pINC AINC A; ;指令编码为指令编码为 04H04Hp含有操作数寄存器号的单字节指令含有操作数寄存器号的单字节指令 n指令码由指令码由操作码操作码字段字段和和指示操作数所在指示操作数所在寄存器号寄存器号的的字段字段组成组成 n例:例:pMOV AMOV A,Rn ;Rn ;指令编码为指令编码为 E8HE8HEFHEFH ALUATMPPSWPCIRID控制器控制器ARB+1RAM地址
6、锁存地址锁存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控制器控制器ARB+1RAM地址锁存地
7、址锁存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位地址位地址CJNE ACJNE A,#0
8、0#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,3AH 3AH 例例2 MOV DPTR,2 MOV DPTR
9、,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 个字节单元个字节单元特殊功能寄存器特殊功能寄存器特殊功能寄
10、存器特殊功能寄存器只能用只能用直接寻址直接寻址方式进行访问方式进行访问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; ;直接寻址(机器码直接寻址(机器
11、码: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) 寄存器间接寻址寄存器间接寻址p使用规定使用规定n
12、片内(低片内(低128B128B)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)=5BH=5BH,执行指令
13、,执行指令MOVMOVA A,R0 R0 ;A(R0)A(R0)结果:(结果:(A A)= 5BH= 5BH5BH 练习练习 若(若(3456H3456H)=99H=99H,则执行完以下指令后,累加,则执行完以下指令后,累加器器A A中的数据是多少?中的数据是多少? MOV DPTR MOV DPTR,#3456H #3456H ; MOVX AMOVX A,DPTR DPTR ;DPTR 3456HDPTR 3456HA A (DPTRDPTR)(A) = 99H(A) = 99H说出两条指令中,各操作数的寻址方式。说出两条指令中,各操作数的寻址方式。注意:注意:p寄存器寄存器间接间接寻址,
14、寻址,不能不能用于对用于对 SFR 寻址寻址p堆栈操作(堆栈操作(PUSHPUSH,POPPOP)隐含为)隐含为SPSP间接寻址间接寻址p所用寄存器所用寄存器n基地址寄存器:基地址寄存器:DPTRDPTR、PCPCn累加器累加器A:预先预先存放存放被寻址操作数地址被寻址操作数地址相对相对基地址基地址的的偏移量偏移量p只能只能 访问访问 ROMROMp3 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+D
15、PTR ;PC (A)+(DPTR) (A)+(DPTR)(5 5) 变址寻址变址寻址取操作取操作数数获得程序的跳转获得程序的跳转地址地址下一条下一条指令指令的的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:M
16、OVC AMOVC A,A+PC A+PC 执行后:(执行后:(A A)= 20H= 20H20H 例例33若(若(A A)=08H=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的的当前当前值值) ) re
17、lrelp目的地址目的地址 转移指令地址转移指令地址 转移指令转移指令字节数字节数 relrelp其中其中relrel 带符号的带符号的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 0
18、0H00H结果:程序转移到结果:程序转移到200A200A处开始继续执行处开始继续执行(7 7) 位寻址位寻址p操作数:操作数:n片内片内 RAMRAM 单元中的某一单元中的某一位位n只给出只给出位地址位地址,而,而不是不是字节地址字节地址p可位寻址区为:可位寻址区为:n片内片内RAMRAM(共(共1616个字节,个字节,128128个位)个位)p字节地址:字节地址:20H20H2FH2FHp位地址:位地址:00H00H7FH7FH能被能被8 8整除整除的的SFRSFR的相应位地址的相应位地址p 例例 CLR ACC.0 ;CLR ACC.0 ;累加器累加器A A的的D0D0位清零位清零MOV
19、 30HMOV 30H,C C ; 30H30H为片内为片内RAMRAM中的位地址中的位地址可位寻址区可位寻址区回顾:片内回顾:片内RAMRAMp工作寄存器区:工作寄存器区:n字节地址:字节地址:00H00H1FH1FHp位寻址区:位寻址区:n字节地址:字节地址:20H20H2FH2FHn位地址为:位地址为:00H00H7FH7FHp数据缓冲区数据缓冲区/ /堆栈区:堆栈区:n字节地址:字节地址:00H00H7FH7FHn一般使用一般使用30H30H7FH7FH可位寻址区可位寻址区回顾:特殊功能寄存器回顾:特殊功能寄存器SFRSFRp占用字节地址:占用字节地址:80H80HFFHFFHp位寻址
20、寄存器:位寻址寄存器:n其字节地址可被其字节地址可被8 8整除整除p专用寄存器:专用寄存器:nA A、B B、PSWPSW、DPTRDPTR、SPSPpI/OI/O接口寄存器:接口寄存器:nP0P0、P1P1、P2P2、P3P3、SBUFSBUF、TMODTMOD、TCONTCON、SCON SCON 位地址的表示方式,位地址的表示方式,4 4种种p 直接使用位地址直接使用位地址nMOV CMOV C,0D5H0D5HpPSWPSW的位的位5 5(位地址位地址D5HD5H)的状态送进位标志位)的状态送进位标志位p 单元地址加位序号的形式单元地址加位序号的形式nMOV CMOV C,0D0H.5
21、0D0H.5pPSWPSW(单元地址单元地址0D0H0D0H)的位)的位5 5(位地址(位地址D5HD5H)的状态送进位标志位)的状态送进位标志位p 特殊功能寄存器符号加位序号的形式特殊功能寄存器符号加位序号的形式nMOV CMOV C,PSW.5PSW.5pPSWPSW的位的位5 5的状态送进位标志位的状态送进位标志位p 位名称表示形式位名称表示形式nMOV CMOV C,F0F0pPSWPSW的位的位5 5(位地址(位地址D5HD5H、位名称为、位名称为F0F0)的状态送进位标志位)的状态送进位标志位小结:小结:寻址方式和寻址空间寻址方式和寻址空间序号序号寻址方式寻址方式使用的变量使用的变
22、量寻址空间寻址空间1 1立即寻址立即寻址ROMROM2 2直接寻址直接寻址(1)(1)内部内部RAMRAM的低的低128128字节;字节;(2)(2)特殊功能寄存器特殊功能寄存器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中的位寻址区;中的位寻址
23、区;(2)(2)可位寻址的特殊功能寄存器位可位寻址的特殊功能寄存器位练习题练习题1 1、访问、访问80318031片外数据存储器片外数据存储器MOVXMOVX指令采用的是(指令采用的是( )寻址方)寻址方式;访问片外程序存储器式;访问片外程序存储器MOVCMOVC指令采用的是(指令采用的是( )寻址方式。)寻址方式。2 2、下列各条指令中寻址方式属于正确的变址寻址的是(、下列各条指令中寻址方式属于正确的变址寻址的是( )A.MOVX A, A+PC B.MOV A, A+DPTRA.MOVX A, A+PC B.MOV A, A+DPTRC. MOVC B, B+PC D.MOVC A, A+PCC. MOVC B, B+PC D.MOVC A, A+PC3 3、说出指令中源操作数的寻址方式、说出指令中源操作数的寻址方式(1)MOV DPTR, #1000H(1)MOV DPTR, #1000H(2)MOV R7, A(2)MOV R7, A(3)ADD A, 40H(3)ADD A, 40H(4)MOVX 20H, DPTR(4)MOVX 20H, DPTR(5)MOVC A, A+PC(5)MOVC A, A+PC(6)SJMP LOOP(6)SJMP LOOP