《MCS-51单片机指令系统-3.2寻址方式.ppt》由会员分享,可在线阅读,更多相关《MCS-51单片机指令系统-3.2寻址方式.ppt(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第3 3章章 MCS-51 MCS-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 ;跳转至外部中断跳转至外部中断0的中断服
2、务程序的中断服务程序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.2 指令的格式指令的
4、格式 标号标号:操作码助记符操作码助记符 目的操作数目的操作数,源操作数源操作数;注释注释 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位立即数,即位立即数,即00H00HFFHFFH#datal6#datal6表示表示1616位
5、立即数,即位立即数,即0000H0000HFFFFHFFFFHaddrl6addrl61616位地址,可表示用于位地址,可表示用于64K64K范范围围内内寻寻址,用于址,用于LCALLLCALL和和LJMPLJMP指令中(指令中(2 21616=64K=64K)addrlladdrll1111位位地地址址,可可表表示示2K2K范范围围内内寻寻址址,用用于于ACALLACALL和和AJMPAJMP指指令中(令中(2 21111=2K=2K)relrel带带符符号号的的8 8位位地地址址偏偏移移量量(128128+127)+127),用用于于SJMPSJMP和和条条件件转转移指令中移指令中bitb
6、it位位寻寻址址区区的的直直接接寻寻址址位位,表表示示片片内内RAMRAM中中可可寻寻址址位位和和SFRSFR中的可中的可寻寻址址位位$当前指令所在地址当前指令所在地址DPTRDPTR数据指数据指针针 间间接接寻寻址寄存器或基址寄存器的前址寄存器或基址寄存器的前缀缀/加在位地址之前,表示加在位地址之前,表示该该位先取反再参与运算,但位先取反再参与运算,但不影响不影响该该位的位的值值directdirect8 8位位直直接接地地址址,可可以以是是内内部部RAMRAM区区的的某某一一单单元元或或某某一一专专用功能寄存器的地址用功能寄存器的地址(X)(X)X X地地址址单单元元中中的的内内容容,或或
7、X X作作为为间间接接寻寻址址寄寄存存器器时时所所指指单单元的内容元的内容(X)(X)由由X X寻寻址的址的单单元的内容元的内容将箭将箭头头后面的内容后面的内容传传送到箭送到箭头头前面去前面去3.1.3 3.1.3 指令的字节指令的字节 p(1)单字节指令)单字节指令n操作码和操作数加起来只有一个字节操作码和操作数加起来只有一个字节p(2)双字节指令)双字节指令n操作码和操作数各占一个字节操作码和操作数各占一个字节p(3)三字节指令)三字节指令n第一字节为操作码第一字节为操作码n第二、第三字节为操作数或操作数地址第二、第三字节为操作数或操作数地址(1 1)单字节指令)单字节指令(49(49条)
8、条)p无操作数单字节指令无操作数单字节指令n指令中指令中只有只有操作码操作码字段,字段,操作数操作数隐含隐含在操作码中在操作码中 n例:例:pINC AINC A;指令编码为指令编码为 04H 04Hp含有操作数寄存器号的单字节指令含有操作数寄存器号的单字节指令 n指令码由指令码由操作码操作码字段字段和和指示操作数所在指示操作数所在寄存器号寄存器号的的字段字段组成组成 n例:例:pMOV AMOV A,Rn;Rn;指令编码为指令编码为 E8H E8HEFHEFH ALUATMPPSWPCIRID控制器控制器ARB+1RAM地址锁存地址锁存RAMROM04HINC AINC A指令编码:指令编码
9、:04H04H(2 2)双字节指令)双字节指令(46(46条条)p指令指令n操作码字节操作码字节在前在前;n在后在后的操作数字节可以是的操作数字节可以是立即数立即数,也可以是操,也可以是操作数所在片内作数所在片内RAMRAM的的地址地址。n例:例:pMOV AMOV A,#data;#data;指令编码为指令编码为 74H data 74H datapMOV AMOV A,dir ;dir ;指令编码为指令编码为 E5H dir E5H dir ALUATMPPSWPCIRID控制器控制器ARB+1RAM地址锁存地址锁存RAMROME5H35HFFH36H37H38H34H33H35H35HF
10、FHMOV 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,#00#00,60H 60H p1616位地址位地址LCALL 2020HLCALL 2020
11、H3.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 DPTR,2 MOV DPTR,1638H1638H ;A3AH A3AH ;DPTR1638HDPTR1638HMOV MOV 3AH
12、,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 个字节单元个字节单元特殊功能寄存器特殊功能寄存器特殊功能寄存器特殊功能寄存器只能用只能用直接寻址直接寻址方式进行访问方式进行访问A A、B B、DPTRDPTR?(3 3)寄存器寻址)寄存器寻址
13、例例 若(若(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;直接寻址(机器码直接寻址(机器码:05:05E0E0H H)pINC 0E0H INC 0E0H;直接寻址(机器码直接寻址(机器码:05:05E0E0H H)n寄存器寄存器 B BpMUL A
14、B MUL AB 和和 DIV AB DIV AB;寄存器寻址寄存器寻址pMOV B,#12HMOV B,#12H;直接寻址(机器码直接寻址(机器码:75:75F0F012H12H)n数据指针数据指针 DPTR DPTRpINC DPTRINC DPTR和和 MOV DPTR MOV DPTR,#1234H#1234H;寄存器寻址寄存器寻址特特有有指指令令(4 4)寄存器间接寻址寄存器间接寻址p使用规定使用规定n片内(片内(256B256B)RAM RAM 间接用间接用 Ri Ri(i=i=i=i=0 0 或或或或 1 1),即即pMOV AMOV A,R1 R1 或或 MOV AMOV A,
15、R0R0n片外片外 64KB RAM 64KB RAMp间接用间接用 DPTR DPTR,即,即MOVX AMOVX A,DPTRDPTRp间接用间接用 Ri Ri,即,即MOVX AMOVX A,R1R1 或或MOVX AMOVX A,R0R0此时,此时,高高8 8位位地址由地址由P2P2提供,提供,低低8 8位位地址由地址由RiRi提供提供 例例1 1 若(若(R0R0)=0AAH=0AAH,(,(0AAH0AAH)=5BH=5BH,执行指令,执行指令MOVMOVA A,R0 R0;A(R0)A(R0)结果:(结果:(A A)=5BH=5BH5BH 例例2 2 MOV DPTR MOV D
16、PTR,#3456H#3456H;DPTR 3456HDPTR 3456H 若(若(3456H3456H)=99H=99H,则,则MOVX AMOVX A,DPTR DPTR ;A A(DPTRDPTR);(A)=99H(A)=99H注意:注意:p寄存器寄存器间接间接寻址,寻址,不能不能用于对用于对 SFR 寻址寻址pp片内片内RAMRAM和和片外片外RAMRAM之间之间不能不能直接直接传递数据传递数据p堆栈操作(堆栈操作(PUSHPUSH,POPPOP)隐含为)隐含为SPSP间接寻址间接寻址(5 5)变址寻址变址寻址p3 3条条nMOVMOVC C A A,A+PC A+PC ;A ((A)
17、+(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取操作取操作数数获得程序的跳转获得程序的跳转地址地址下一条下一条指令指令的的PC值值 例例1 1 若(若(A A)=08H=08H,(,(DPHDPH)=2
18、0H=20H,(,(DPLDPL)=00H=00H;执行:执行:MOVC AMOVC A,A+DPTRA+DPTR执行后:执行后:(A)=88H(A)=88H88H 例例22若(若(A A)=30H=30H,(,(1031H1031H)=20H=20H执行:执行:地址地址1000H1000H处的指令处的指令 1000H 1000H:MOVC 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
19、)=2008H=2008H 程序从程序从 ROM ROM 地址地址 2008H 2008H 处开始执行处开始执行(6 6)相对寻址相对寻址p操作操作n修改修改PC的值,实现程序的的值,实现程序的分支转移分支转移分支转移分支转移n转移的目的地址转移的目的地址p目的地址目的地址 转移指令下条指令地址转移指令下条指令地址(PCPC的的当前当前值值)rel relp目的地址目的地址 转移指令地址转移指令地址 转移指令转移指令字节数字节数 rel relp其中其中relrel带符号的带符号的8 8位二进制数位二进制数补码形式(补码形式(128128127127)等价等价等价等价在实际编程中,在实际编程中
20、,“relrel”通常用通常用标号标号代替代替rel 例例 已知已知 (PCPC)=2000H=2000H 执行如下指令执行如下指令地址地址 ORG 2000H ORG 2000H 指令码指令码2000H 2000H SJMPSJMPSJMPSJMP 200AH 80H 08H80H 08H2002H 2002H NOP NOP 00H 00H 200AH NOP NOP 00H00H结果:程序转移到结果:程序转移到200A200A处开始继续执行处开始继续执行(7 7)位寻址位寻址p操作数:操作数:n片内片内 RAMRAM 单元中的某一单元中的某一位位n只给出只给出位地址位地址,而,而不是不是
21、字节地址字节地址p 例例 CLR ACC.0 CLR ACC.0 MOV 30HMOV 30H,C C;30H 30H为片内为片内RAMRAM中的位地址中的位地址p可位寻址区为:可位寻址区为:n片内片内RAMRAM(共(共1616个字节,个字节,128128个位)个位)p字节地址:字节地址:20H20H2FH2FHp位地址:位地址:00H00H7FH7FHn n字节字节字节字节地址地址地址地址能被能被8 8整除整除的的SFRSFR的相应位地址的相应位地址位地址的表示方式,位地址的表示方式,4 4种种p 直接使用位地址直接使用位地址nMOV CMOV C,0D5H0D5HpPSWPSW的位的位5
22、 5(位地址(位地址D5HD5H)的状态送进位标志位)的状态送进位标志位p 单元地址加位序号的形式单元地址加位序号的形式nMOV CMOV C,0D0H.50D0H.5pPSWPSW(单元地址(单元地址0D0H0D0H)的位)的位5 5(位地址(位地址D5HD5H)的状态送进位标志位)的状态送进位标志位p 特殊功能寄存器符号加位序号的形式特殊功能寄存器符号加位序号的形式nMOV CMOV C,PSW.5PSW.5pPSWPSW的位的位5 5的状态送进位标志位的状态送进位标志位p 位名称表示形式位名称表示形式nMOV CMOV C,F0F0pPSWPSW的位的位5 5(位地址(位地址D5HD5H
23、、位名称为、位名称为F0F0)的状态送进位标志位)的状态送进位标志位小结:小结:寻址方式和寻址空间寻址方式和寻址空间序号序号寻寻址方式址方式使用的使用的变变量量寻寻址空址空间间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中的位中的位寻寻址区;址区;(2)(2)可位可位寻寻址的特殊功能寄存器位址的特殊功能寄存器位课本课本P51P51表表3-1 3-1 小结小结pMCS-51MCS-51单片机指令单片机指令n分类分类n格式格式n寻址方式寻址方式p作业:作业:P943.3P943.3p预习预习nMCSMCS5151单片机指令系统单片机指令系统指令集指令集