第三章 指令系统(专)_第1页
第三章 指令系统(专)_第2页
第三章 指令系统(专)_第3页
第三章 指令系统(专)_第4页
第三章 指令系统(专)_第5页
已阅读5页,还剩118页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章第三章 80C51单片机的指令系统单片机的指令系统 3.1 指令系统概述 3.1.1 指令及指令格式指令及指令格式 指令是用户编程使用的一种命令,使计算机指令是用户编程使用的一种命令,使计算机内部执行某种操作。内部执行某种操作。 计算机只能识别二进制代码,此二进制代码计算机只能识别二进制代码,此二进制代码指令称为机器语言指令。指令称为机器语言指令。 用助记符来表示机器语言指令称为汇编语用助记符来表示机器语言指令称为汇编语言指令。言指令。 计算机能够执行的全部指令的集合,构成这计算机能够执行的全部指令的集合,构成这种计算机的指令系统。种计算机的指令系统。 一、指令及指令系统的概念一、指令及

2、指令系统的概念指令有三种属性:功能、时间和空间。指令有三种属性:功能、时间和空间。 功能属性:某种特定的操作;功能属性:某种特定的操作;时间属性:执行一条指令所用的时间;时间属性:执行一条指令所用的时间;空间属性:一条指令所用占用的字节数;空间属性:一条指令所用占用的字节数; 源程序(汇编语言程序)源程序(汇编语言程序) 目标程序(机器语言程序目标程序(机器语言程序) 机器或手工汇编机器或手工汇编 计算机能执行的是机器代码计算机能执行的是机器代码二、二、MCS51指令系统主要特点指令系统主要特点 MCS51指令系统共使用:指令系统共使用:7种寻址种寻址方式,方式,42种助记符。分种助记符。分5

3、大类,大类,33种功能,种功能,111条指令。条指令。 主要特点有:主要特点有: 二、二、MCS51指令系统主要特点指令系统主要特点 (1)指令执行时间快。)指令执行时间快。 若时钟采用若时钟采用12MHZ,则指令执行时间最快,则指令执行时间最快1S,最慢最慢4S。 (2)指令短。)指令短。 49条单字节,条单字节,46条双字节,条双字节,16条三字节条三字节 (3)用一条指令即可实现)用一条指令即可实现2个一字节的相乘或相除。个一字节的相乘或相除。(4)具有丰富的位操作指令。)具有丰富的位操作指令。 (5)可直接用传送指令实现端口的输入输出操作。)可直接用传送指令实现端口的输入输出操作。三、

4、指令格式三、指令格式 在在MCS-51指令中,一般指令主要由操作码、操指令中,一般指令主要由操作码、操作数组成。作数组成。指令应具有以下功能:指令应具有以下功能:(1)操作码指明执行什么性质和类型的操作。)操作码指明执行什么性质和类型的操作。例如,数的传送、加法、减法等。例如,数的传送、加法、减法等。(2)操作数指明操作的数本身或者是操作数所)操作数指明操作的数本身或者是操作数所在的地址。在的地址。(3)指定操作结果存放的地址。)指定操作结果存放的地址。三、指令格式三、指令格式 汇编语言指令格式:汇编语言指令格式: 操作码助记符目的操作数,源操作数操作码助记符目的操作数,源操作数机器指令格式:

5、机器指令格式: 操作码操作数操作码操作数1操作数操作数2 有单字节、双字节、三字节等不同长度的指令。 8机器指令的字节编码形式机器指令的字节编码形式v 8 8位编码仅为操作码位编码仅为操作码 单字节指令(单字节指令(4949条)条)位号7 6 5 4 3 2 1 0字节opcode如:如:INC A INC A 编码为:编码为:0 0 0 0 0 1 0 0即:即:04H04Hv 8 8位编码含操作码和寄存器编码位编码含操作码和寄存器编码位号 7 6 5 4 3 2 1 0 字节opcoder r r如:如:MOV AMOV A,R0 R0 编码为编码为:1 1 1 0 1 0 0 0即:即:

6、E8HE8H2021-10-169 双字节指令(双字节指令(4545条)条)位号7 6 5 4 3 2 1 0字节opcodedata或direct 三字节指令(三字节指令(1717条)条)位号7 6 5 4 3 2 1 0字节opcodedata或directdata或direct如:如:MOV AMOV A,#50H #50H 编码为编码为:0 1 1 1 0 1 0 00 1 0 1 0 0 0 0即:即:74H74H 50H 50H如:如:MOV 20HMOV 20H,#50H #50H 编码为编码为:0 1 1 1 0 1 0 10 1 0 0 0 0 0 00 1 0 1 0 0

7、0 0即:即:75H75H 20H 20H 50H 50H3.1.2 符号指令及其注释中常用的符号符号指令及其注释中常用的符号Rn(n=07)-当前选中的工作寄存器组中的寄存当前选中的工作寄存器组中的寄存器器R0R7之一;之一;Ri(i=0,1)-当前选中的工作寄存器组中的寄存器当前选中的工作寄存器组中的寄存器R0或或R1; -间址寄存器前缀;间址寄存器前缀;#data -8位立即数;位立即数;#data16-16位立即数;位立即数;direct-片内低片内低128个个RAM单元地址及单元地址及SFR地址地址(可用符号名称表示);(可用符号名称表示);addr11-11位目的地址;位目的地址;

8、addr16-16位目的地址;位目的地址;rel-补码形式表示的补码形式表示的8位地址偏移量,位地址偏移量,值在值在128127范围内;范围内;bit-片内片内RAM位地址、位地址、SFR的位地址的位地址(可用符号名称表示);(可用符号名称表示);/-位操作数的取反操作前缀;位操作数的取反操作前缀;()- 表示表示 地址单元或寄存器中的内地址单元或寄存器中的内容;容;() -表示表示所指地址单元的内容。所指地址单元的内容。 -将箭头左边的内容送入箭头右边将箭头左边的内容送入箭头右边的单元中。的单元中。3.1.3 80C51指令系统主要特点指令系统主要特点 (1)指令执行时间快。)指令执行时间快

9、。 64条单机器周期,条单机器周期,45条双机器周期,两条四机器周期条双机器周期,两条四机器周期指令。若时钟采用指令。若时钟采用12MHZ,则指令执行时间最快,则指令执行时间最快1S,最慢最慢4S。(2)指令短。)指令短。 49条单字节,条单字节,45条双字节,条双字节,17条三字节条三字节 (3)用一条指令即可实现)用一条指令即可实现2个一字节的相乘或相除。个一字节的相乘或相除。(4)具有丰富的位操作指令。)具有丰富的位操作指令。 (5)可直接用传送指令实现端口的输入输出操作。)可直接用传送指令实现端口的输入输出操作。3.2 80C513.2 80C51的寻址方式的寻址方式是寻找操作数或指令

10、的地址的方式是寻找操作数或指令的地址的方式。80C51的的寻址方式有七种寻址方式有七种。即:立即寻址、。即:立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址(基址寄存器加变址寄存器)、变址寻址(基址寄存器加变址寄存器)、相对寻址和位寻址。相对寻址和位寻址。1 1、立即立即数数寻址寻址 指令编码中直接给出操作数指令编码中直接给出操作数的寻址方式称为立即的寻址方式称为立即寻址。在这种寻址方式中,紧跟在操作码之后的操作寻址。在这种寻址方式中,紧跟在操作码之后的操作数称为立即数。立即数可以为一个字节,也可以是两数称为立即数。立即数可以为一个字节,也可以是两

11、个字节,并要用符号个字节,并要用符号“”来标识。由于立即数是一来标识。由于立即数是一个常数,所以只能作为源操作数。个常数,所以只能作为源操作数。 立即寻址所对应的寻址空间为:立即寻址所对应的寻址空间为:ROM 如:如:MOV A,50H 2、直接寻址、直接寻址 直接寻址是指在指令中直接给出操作数所在存直接寻址是指在指令中直接给出操作数所在存储单元的地址。执行指令时,从该地址中直接获储单元的地址。执行指令时,从该地址中直接获取操作数。取操作数。 直接寻址中的直接寻址中的SFR经常采用符号形式表示。经常采用符号形式表示。寻址空间为:寻址空间为:片内片内RAM低低128字节;字节;SFR。如:如:M

12、OV A,50H 3、寄存器寻址、寄存器寻址 寄存器寻址是指把寄存器的内容作为操作数。寄存器寻址是指把寄存器的内容作为操作数。可以获得较高的传送和运算速度。可以获得较高的传送和运算速度。 寄存器可以是:寄存器可以是:R0R7;A;B;DPTR。如:如:MOV A,R0 4、寄存器间接寻址、寄存器间接寻址 以寄存器的内容为地址,该地址中的内容为操作以寄存器的内容为地址,该地址中的内容为操作数的寻址方式。数的寻址方式。可作为寄存器间接寻址的寄存器有可作为寄存器间接寻址的寄存器有:R0、R1、DPTR 、SP(仅用于堆栈操作仅用于堆栈操作)寻址的存储空间为片内寻址的存储空间为片内RAM或片外或片外R

13、AM。间接寻址用间接寻址用“”表示。表示。 例:例:ANL A,R0;MOV A,R0; MOVX A,R0;MOVX DPTR,A MOV P2,20H MOV R0,00H MOVX A,R0也可:也可: MOV DPTR,2000H MOVX A,DPTR两者效果相同。两者效果相同。例如:例如:片内RAM30HR034HA30H34H MOV R0,A间接寻址示意图片外RAM20HP245HA2010H45H10HR0片外RAM2000HDPTR30HA2000H30HMOVX A,R0间接寻址示意图 MOVX DPTR,A间接寻址示意图5、变址寻址、变址寻址 由基址寄存器由基址寄存器P

14、C或或DPTR加上偏移量寄存器加上偏移量寄存器A中内中内容之和形成操作数地址的寻址方式。容之和形成操作数地址的寻址方式。该方式只能对程序存储器操作。只读,无写。该方式只能对程序存储器操作。只读,无写。例:例:MOVC A,A+DPTR; MOVC A,A+PC如:如:MOVC A,A+DPTR 6、相对寻址、相对寻址 以当前以当前PC的内容为基址的内容为基址(指读出该(指读出该2字节或字节或3字字节的跳转指令后,节的跳转指令后,PC指向的下条指令的地址)指向的下条指令的地址) ,加上指令给出的一字节补码偏移量形成新的加上指令给出的一字节补码偏移量形成新的PC值的值的寻址方式。寻址方式。 偏移量

15、偏移量rel为带符号数,能表示的范围:为带符号数,能表示的范围:+127-128 相对寻址用于修改相对寻址用于修改PC值,主要用于实现程序的值,主要用于实现程序的分支转移。分支转移。 例:例:SJMP 08H ;PC+2+08HPC程序存储器(2000H)200AHSJMP200AH08H2000H+208HPC2000H相对寻址示意图7、位寻址、位寻址 对位地址中的内容作位操作的寻址方式。对位地址中的内容作位操作的寻址方式。 只能采用直接寻址。位地址与字节地址形式一样,只能采用直接寻址。位地址与字节地址形式一样,由操作码区分。(位地址也可定义符号地址)由操作码区分。(位地址也可定义符号地址)

16、 位地址有四种表示方法(后述)位地址有四种表示方法(后述)例:例:SETB 20H; MOV C,32H; FAST BIT 20H SETB FAST;存储器的数据操作方式存储器的数据操作方式 1、程序存储器的数据操作:、程序存储器的数据操作:只读,地址由只读,地址由PC提供,也可用提供,也可用PC或或DPTR变址寻址。变址寻址。例:例:MOVC A,A+DPTR2、外部数据、外部数据RAM的数据操作的数据操作 可读、可写,用可读、可写,用DPTR或或R0、R1间址。间址。 用用R0、R1间址时,间址时,P2提供地址高提供地址高8位,位,R0或或R1提提供低供低8位。位。例:例:MOVX D

17、PTR,A MOVX A,DPTR MOV P2, #20H MOV R0,#30H MOVX R0,A3、内部数据、内部数据RAM的数据操作的数据操作 可读、写,直接寻址或可读、写,直接寻址或R0、R1间接寻址间接寻址(8032高地址高地址RAM只能用只能用R0和和R1间址)间址) 例:例:MOV 30H,AMOV R0,#30HMOV R0,A4、SFR的数据操作的数据操作 可读、写,只能直接寻址。可读、写,只能直接寻址。例:例:MOV P1,#30H; MOV A,P0; MOV PSW,#10H )5、位地址空间的数据操作、位地址空间的数据操作 可读、写,直接寻址。可读、写,直接寻址。

18、 SETB 20H;CLR 20H;SETB EA 3.3 80C513.3 80C51指令系统指令系统80C51指令系统共使用:指令系统共使用:7种寻种寻址方式,址方式,42种助记符。分种助记符。分5大类,大类,33种功能,种功能,111条指令。条指令。 3.3.1 数据传送类指令(数据传送类指令(29条)条)传送类指令占有较大的比重。数据传送是传送类指令占有较大的比重。数据传送是进行数据处理的最基本的操作,这类指令进行数据处理的最基本的操作,这类指令一般一般不影响标志寄存器不影响标志寄存器PSW的状态。的状态。 传送类指令可以分成两大类。传送类指令可以分成两大类。一是采用一是采用MOV操作

19、符,称为一般传送指令;二是采用操作符,称为一般传送指令;二是采用非非MOV操作符,称为特殊传送指令,如:操作符,称为特殊传送指令,如:MOVC、MOVX、PUSH、POP、XCH、XCHD及及SWAP。 一般传送指令一般传送指令一般传送指令一般传送指令一般传送指令的指令格式为:一般传送指令的指令格式为: MOV , (源(源目的,源不变)目的,源不变) 一、一、16位传送位传送MOV DPTR,#data16 ;DPTR data16 这条指令的功能是将源操作数这条指令的功能是将源操作数data16(通(通常是地址常数)送入目的操作数常是地址常数)送入目的操作数DPTR中。源中。源操作数的寻址

20、方式为立即寻址。操作数的寻址方式为立即寻址。例如:例如: 执行指令执行指令 MOV DPTR,#1234H 后后 (DPH)=12H,(,(DPL)=34H。二、二、8位传送位传送格式为:格式为: MOV , (源(源目的,源不变)目的,源不变) 目的字节目的字节: A,Rn,direct,Ri源字节源字节: A,Rn,direct,Ri,#data 在在5种源字节中,只有种源字节中,只有data不能用作目的字节。不能用作目的字节。所以可以用所以可以用4种目的字节为基础构造种目的字节为基础构造4类指令。相类指令。相应的源字节选择依据是:应的源字节选择依据是:源字节与目的字节不相同(除源字节与目

21、的字节不相同(除direct外);外);寄存器寻址与寄存器间接寻址间不相互传送寄存器寻址与寄存器间接寻址间不相互传送。1、 以以A为目的为目的 Rn ARn direct AdirectMOV A Ri ARi #data Adata ;();(),;();这组指令的功能是把源字节送入累加器中。源这组指令的功能是把源字节送入累加器中。源字节的寻址方式分别为直接寻址、寄存器间接寻字节的寻址方式分别为直接寻址、寄存器间接寻址、寄存器寻址和立即寻址四种基本寻址方式。址、寄存器寻址和立即寻址四种基本寻址方式。例:若(例:若(R1)= 20H,(,(20H)= 55H,执行,执行指令指令 MOV A,R

22、1 后,(后,(A)= 55H。2以以Rn 为目的为目的 A RnAMOV Rn direct Rndirect #data Rndata;( ),;();这组指令的功能是把源字节送入寄存器这组指令的功能是把源字节送入寄存器Rn中。中。源字节的寻址方式分别为立即寻址、直接寻址和源字节的寻址方式分别为立即寻址、直接寻址和寄存器寻址(由于目的字节为工作寄存器,所以寄存器寻址(由于目的字节为工作寄存器,所以源字节不能是工作寄存器及其间址方式寻址)。源字节不能是工作寄存器及其间址方式寻址)。例:若(例:若(50H)= 40H,执行指令,执行指令 MOV R6,50H 后,(后,(R6)= 40H。3以

23、以direct 为目的为目的 A directA Rn directRnMOV direct direct1 directdirect1 Ri directRi #data directdata;();(),;();();这组指令的功能是把源字节送入这组指令的功能是把源字节送入direct中。源中。源字节的寻址方式分别为立即寻址、直接寻址、字节的寻址方式分别为立即寻址、直接寻址、寄存器间接寻址和寄存器寻址。寄存器间接寻址和寄存器寻址。 例:若(例:若(R1)=50H,(50H)=18H,执行指,执行指令令MOV 40H,R1 后后,(40H)=18H。 4以以Ri为目的为目的 A RiAMOV

24、 Ri direct Ridirect #data Ridata;()( ),;()();()这组指令的功能是把源字节送入这组指令的功能是把源字节送入Ri内容为地址内容为地址的单元,源字节寻址方式为立即寻址、直接寻址的单元,源字节寻址方式为立即寻址、直接寻址和寄存器寻址(因目的字节采用寄存器间接寻址,和寄存器寻址(因目的字节采用寄存器间接寻址,故源字节不能是寄存器及其间址寻址)。故源字节不能是寄存器及其间址寻址)。例:若(例:若(R1)=30H,(,(A)=20H,执行指令,执行指令 MOV R1,A 后,(后,(30H)=20H。 例例:设内部设内部RAM(30H)=40H,(40H)=10

25、H,(10H)=00H(P1)=CAH,分析以下程序执行后各单元及寄,分析以下程序执行后各单元及寄存器、存器、P2口的内容。口的内容。MOV R0,#30H;(R0)30HMOV A,R0;(A)40HMOV R1,A;(R1)40HMOV B,R1;(B)10HMOV R1,P1;(40H)CAHMOV P2,P1;(P2)(P1)CAHMOV 10H,#20H;(10H)20H 执行上述指令后的结果为:执行上述指令后的结果为:(R0)=30H,(R1)=(A)=40H,(B)=10H,(40H)=(P1)=(P2)=CAH,(10H)=20H。特殊传送指令特殊传送指令特殊传送指令的操作符为

26、:特殊传送指令的操作符为:MOVC、MOVX、PUSH、POP、XCH、XCHD和和 SWAP。功能分别为:功能分别为:ROM查表、外部查表、外部RAM读读写、堆栈操作和交换指令写、堆栈操作和交换指令 一、一、ROM查表查表1DPTR内容为基址内容为基址 MOVC A,A+DPTR ;A (A)+(DPTR)该指令首先执行该指令首先执行16位无符号数加法,将获得的基址与变位无符号数加法,将获得的基址与变址之和作为址之和作为16位的程序存储器地址,然后将该地址单元的内位的程序存储器地址,然后将该地址单元的内容传送到累加器容传送到累加器A。指令执行后。指令执行后DPTR的内容不变。的内容不变。2P

27、C内容为基址内容为基址MOVC A,A+PC ;A (A)+(PC)取出该单字节指令后取出该单字节指令后PC的内容增的内容增1,以增,以增1后的当前值去后的当前值去执行执行16位无符号数加法,将获得的基址与变址之和作为位无符号数加法,将获得的基址与变址之和作为16位的程序存储器地址。然后将该地址单元的内容传送到累位的程序存储器地址。然后将该地址单元的内容传送到累加器加器A。指令执行后。指令执行后PC的内容不变。的内容不变。例:例:A中内容是一个中内容是一个BCD数(数(09),用查表法),用查表法获取相应的平方值。获取相应的平方值。 方法一:用方法一:用DPTR间址子程序间址子程序BCD-BC

28、D2:MOV DPTR,#TAB;TAB首址送首址送 DPTR MOVC A,A+DPTR;查表;查表 RETTAB: DB 0,1,4,9,16,25 DB 36,47,64,81例:例:A中内容是一个中内容是一个BCD数(数(09),用查表法),用查表法获取相应的平方值。获取相应的平方值。 方法二:用方法二:用PC间址子程序间址子程序BCDBCD2:ADD A,01 MOVC A,A+PC RETTAB: DB 0,1,4,9,16,25 DB 36,47,64,81加加1的目的是为了绕过的目的是为了绕过RET指令,使查表正确,常指令,使查表正确,常用于近程查表,上例用于远程查表用于近程查

29、表,上例用于远程查表 二、读写片外二、读写片外RAM1读片外读片外RAM MOVX A,DPTR ;A (DPTR) MOVX A,Ri ;A (Ri) 第一条指令以第一条指令以16位位DPTR为间址寄存器为间址寄存器读片外读片外RAM,可以寻址整个,可以寻址整个64K字节的片外字节的片外RAM空间。指令执行时,在空间。指令执行时,在DPH中的高中的高8位位地址由地址由P2口输出,在口输出,在DPL中的低中的低8位地址由位地址由P0口分时输出,并由口分时输出,并由ALE信号锁存在地址锁信号锁存在地址锁存器中。存器中。第二条指令以第二条指令以R0或或R1为间址寄存器,也为间址寄存器,也可以读整个

30、可以读整个64K字节的片外字节的片外RAM空间。指令空间。指令执行时,低执行时,低8位地址在位地址在R0或或R1中由中由P0口分口分时输出,时输出,ALE信号将地址信息锁存在地址锁信号将地址信息锁存在地址锁存器中,高存器中,高8位地址由位地址由P2口提供。口提供。 读片外读片外RAM的的MOVX操作,使操作,使P3.7引脚引脚输出的信号选通片外输出的信号选通片外RAM单元,相应单元的单元,相应单元的数据从数据从P0口读入累加器中。口读入累加器中。2写片外写片外RAMMOVX DPTR,A ;(;(DPTR)(A)MOVX Ri,A ;(;(Ri)(A) 第一条指令以第一条指令以16位位DPTR

31、为间址寄存器写为间址寄存器写外部外部RAM,可以寻址整个,可以寻址整个64K字节的片外字节的片外RAM空间。指令执行时,在空间。指令执行时,在DPH中高中高8位地位地址由址由P2口输出,在口输出,在DPL中的低中的低8位地址,由位地址,由P0口分时输出,并由口分时输出,并由ALE信号锁存在地址锁信号锁存在地址锁存器中。存器中。 第二条指令以第二条指令以R0或或R1为间址寄存器,也为间址寄存器,也可以写整个可以写整个64K字节的片外字节的片外RAM空间。指令空间。指令执行时,低执行时,低8位地址在位地址在R0或或R1中由中由P0口分时口分时输出,输出,ALE信号将地址信息锁存在地址锁存信号将地址

32、信息锁存在地址锁存器中(多于器中(多于256字节的访问,高位地址由字节的访问,高位地址由P2口提供)。口提供)。 写片外写片外RAM的的“MOVX”操作,使操作,使P3.6引引脚的信号有效,累加器脚的信号有效,累加器A的内容从的内容从P0口输出口输出并写入选通的相应片外并写入选通的相应片外RAM单元。单元。(外部外部I/O口操作类同)口操作类同) 片内片内RAM的数据传送采用的数据传送采用“MOV”类指令,间接寻址寄类指令,间接寻址寄存器采用寄存器存器采用寄存器R0或或R1(堆栈操作时采用(堆栈操作时采用SP); 片外片外RAM的数据传送采用的数据传送采用“MOVX”类指令,这时类指令,这时间

33、接寻址寄存器有两种选择,一是采用间接寻址寄存器有两种选择,一是采用R0和和R1作间作间址寄存器,这时址寄存器,这时R0或或R1提供低提供低8位地址(外部位地址(外部RAM多于多于256字节采用页面方式访问时,可由字节采用页面方式访问时,可由P2口未使用口未使用的的I/O引脚提供高位地址);二是采用引脚提供高位地址);二是采用DPTR作为间作为间址寄存器。址寄存器。 三、堆栈操作三、堆栈操作堆栈是在内部堆栈是在内部RAM中按中按“后进先出后进先出”的规则组织的一片的规则组织的一片存储区。此区的一端固定,称为栈底;另一端是活动的,存储区。此区的一端固定,称为栈底;另一端是活动的,称为栈顶。栈顶的位

34、置(地址)由栈指针称为栈顶。栈顶的位置(地址)由栈指针SP指示(即指示(即SP的的内容是栈顶的地址)。内容是栈顶的地址)。在在89C51中,堆栈的中,堆栈的生长方向是向上生长方向是向上的(地址增大)。的(地址增大)。 系统复位系统复位时,时,SP的内容为的内容为07H。 PUSH direct ;(;(SP) (SP) 1, (SP)(direct) POP direct ;(;(direct)(SP),), (SP) (SP)1 例:若(例:若(SP)=07H,(,(40H)=88H,执行指令,执行指令 PUSH 40H 后,(后,(SP)=08H,(,(08H)=88H。片内RAM30H1

35、1H10HSP片内RAM50H40H11H10HSP40H30H片内RAM50H40H11H10H50HSP30H片内RAM40H11H10H50HSP30H50H50H执行前执行前执行PUSH指令后执行POP指令后指令指令PUSH 40H操作示意图操作示意图指令指令POP 30H操作示意图操作示意图例:例: 若在外部程序存储器中若在外部程序存储器中2000H单元开始依次存放单元开始依次存放09的平方值,数据指针的平方值,数据指针(DPTR)=3A00H,用查表指令取得,用查表指令取得2003H单元的数据后,要求保持单元的数据后,要求保持DPTR中的内容不变。中的内容不变。MOV A,#03H

36、;(A)03HPUSH DPH;保护;保护DPTR高高8位入栈位入栈PUSH DPL;保护;保护DPTR低低8位入栈位入栈MOV DPTR,#2000H;(DPTR)2000HMOVC A,A+DPTR;(A)(2000H+03H)POP DPL ;弹出;弹出DPTR低位低位POP DPH ;弹出;弹出DPTR高位高位执行结果:执行结果:(A)09H,(DPTR)=3A00H。四、数据交换四、数据交换 对于单一的对于单一的MOV类指令,传送通常是单向的,即数据是类指令,传送通常是单向的,即数据是从一处(源)到另一处(目的)的拷贝。而交换类指令完成从一处(源)到另一处(目的)的拷贝。而交换类指令

37、完成的传送是双向的,是两字节间或两半字节间的双向交换的传送是双向的,是两字节间或两半字节间的双向交换 。 1字节交换字节交换)();()();()();(,RiA Ri directA direct RnA Rn A XCH例:若(例:若(R0)=80H,(,(A)=20H。执行指令。执行指令 XCH A,R0 后,(后,(A)=80H,(,(R0)=20H。2半字节交换半字节交换)();()();(,47A03A A SWAP03Ri03A Ri A XCHD XCHD指令指令的功能是间址操作数的低半字节与的功能是间址操作数的低半字节与A的的低半字节内容互换。低半字节内容互换。 SWAP指令

38、指令的功能是累加器的功能是累加器 的高低的高低4位互换。位互换。 例:若(例:若(R0)30H,(,(30H)67H, (A)20H。执行指令。执行指令 XCHD A,R0 指令后,(指令后,(A)27H,(,(30H)60H。 若(若(A)30H,执行指令,执行指令SWAP A后,(后,(A)03H。3.3.2 算术运算类指令(算术运算类指令(24条)条) 算术运算指令可以完成加、减、乘、除及加加算术运算指令可以完成加、减、乘、除及加加1和减和减1等运算。这类指令多数以等运算。这类指令多数以A为源操作数之一,同时又使为源操作数之一,同时又使A为为目的操作数。目的操作数。 算术运算操作将影响算

39、术运算操作将影响PSW中的中的OV、CY、AC和和P。加法加法一、不带进位加一、不带进位加 Rn AARn direct AAdirectADD A Ri AARi #data AAdata ;( ) ();( ) (),;( ) ();( )二、带进位加二、带进位加 Rn AARnCY direct AAdirectCYADDC A Ri AARiCY #data AAdata CY;( ) () ();( ) () (),;( ) () ();( )()指令的指令的功能功能是把源操作数与累加器是把源操作数与累加器A的内容相加的内容相加再与进位标志再与进位标志CY的值相加,结果送入目的操作数

40、的值相加,结果送入目的操作数A中。中。加的进位标志加的进位标志CY的值的值是在该指令执行之前已经存是在该指令执行之前已经存在的进位标志的值,而不是执行该指令过程中产生在的进位标志的值,而不是执行该指令过程中产生的进位的进位 。例:例:3字节无符号数相加,被加数放在内部字节无符号数相加,被加数放在内部RAM的的20H22H(低字节在低地址,高字节在高地址),加数放在内(低字节在低地址,高字节在高地址),加数放在内部部RAM23H25H,结果放到内部,结果放到内部RAM26H29H。其。其程序段如下:程序段如下: MOV A,20H ;被加数最低字节送累加器;被加数最低字节送累加器A ADD A,

41、23H ;加数最低字节;加数最低字节 MOV 26H,A ;存和的最低字节;存和的最低字节 MOV A,21H ;被加数中间字节送;被加数中间字节送A ADDC A,24H ;加数中间字节;加数中间字节 MOV 27H,A ;存和的中间字节;存和的中间字节 MOV A,22H ;被加数的最高字节送累加器;被加数的最高字节送累加器A ADDC A,25H ;加加数的最高字节;加加数的最高字节 MOV 28H,A ;存和的高字节;存和的高字节 MOV A,#0 ;清累加器;清累加器A ADDC A,#0 ;处理最高字节加产生的进位;处理最高字节加产生的进位 MOV 29H,A ;存最高字节相加产生

42、的进位;存最高字节相加产生的进位三、加三、加1 11DPTRDPTR DPTR 1RiRi Ri 1directdirect direct 1RnRn Rn 1AA A INC)(;)();()(;)(;)(;指令的指令的功能功能是把源操作数的内容加是把源操作数的内容加 1 ,结果再,结果再送回原单元。这些指令仅送回原单元。这些指令仅 INC A 影响影响P标志。其标志。其余指令都不影响标志位的状态。余指令都不影响标志位的状态。 四、十进制调整四、十进制调整 DA A ;对对A中的二进制和调整成中的二进制和调整成BCD数结果数结果;若(;若(A)309或或AC1,则(,则(A)306(A)30

43、;若(;若(A)749或或CY1,则(,则(A)746(A)74;对减法运算无效。;对减法运算无效。例例 若(若(A)0101 0110B,表示的,表示的BCD码为码为56,(R3)0110 0111B,表示的,表示的BCD码为码为67,(,(CY)0。执行以下指令:。执行以下指令:ADD A,R3DA A由于(由于(A)0010 0011B,即,且(,即,且(CY)1,即即结果为结果为BCD数数123。应该注意,应该注意,DA指令不能对减法进行十进制调整。指令不能对减法进行十进制调整。 使用时应注意:使用时应注意:DA指令不能对减法进行十进指令不能对减法进行十进制调整。做减法运算时,可采用十

44、进制补码相制调整。做减法运算时,可采用十进制补码相加,然后用加,然后用 DA A指令进行调整。例如指令进行调整。例如 70 - 20 = 70 + 20补补 = 70 +(100 - 20)= 70 + 80 = 1 50机内十进制补码可采用:机内十进制补码可采用:x补补 = 9AH - x 。例:例: 设片内设片内RAM 30H,31H单元中分别存放着两位单元中分别存放着两位BCD码表示的被减数和减数,两数相减的差仍以码表示的被减数和减数,两数相减的差仍以BCD码的形码的形式存放在式存放在32H单元中。可用下面的程序实现单元中。可用下面的程序实现CLR CMOV A,#9AHSUBB A,3

45、1H ;求减数的十进制补码;求减数的十进制补码ADD A,30H ;作十进制补码加法;作十进制补码加法DA A ;进行;进行BCD调整调整MOV 32H,A ;将;将BCD码的差送存码的差送存32H单元单元减法减法一、带借位减一、带借位减 Rn AARnCY direct AAdirectCYSUBB A Ri AARiCY #data AAdata CY;( ) () ();( ) () (),;( ) () ();( )()二、减二、减11RiRi Ri 1directdirect direct 1RnRn Rn 1AA A DEC)();()(;)(;)(;这组指令的功能是把操作数的内容

46、减这组指令的功能是把操作数的内容减 1 ,结,结果再送回原单元。果再送回原单元。这组指令仅这组指令仅 DEC A 影响影响P标志。其余指令都标志。其余指令都不影响标志位的状态。不影响标志位的状态。乘法乘法MUL AB ; ( B) ( A ) (A ) ( B ) , ( Cy ) 0;A和和B中各存放一个中各存放一个8位无符号数,指令执行后,位无符号数,指令执行后,16位乘积的高位乘积的高8位在位在B中,低中,低8位存位存A中。中。;当乘积大于当乘积大于FFH时,溢出标志位(时,溢出标志位(OV)=1。除法除法DIV AB ;AB商放商放A,余数放,余数放B ;若;若B0,则置,则置OV1

47、;0CYMUL和和DIV两条指令执行时间最长,需两条指令执行时间最长,需4个机个机器周期器周期。 例:把累加器中的二进制数转换为例:把累加器中的二进制数转换为3位位BCD数,百位数放数,百位数放HUND,十位、个位数放在,十位、个位数放在TENONE中。中。HUND和和TENONE为内部为内部RAM中两单元。中两单元。BINBCD:MOV B,100 DIV AB MOV HUND,A;得到百位数;得到百位数 MOV A,10 XCH A,B DIV AB;得到十位数和个位数;得到十位数和个位数 SWAP A; ADD A,B;组成压缩的;组成压缩的BCD数数 MOV TENONE,A RET

48、3.3.3 逻辑运算与循环类指令(逻辑运算与循环类指令(24条)条) 逻辑运算指令逻辑运算指令可以完成与、或、异或、清可以完成与、或、异或、清0和取反操作,当以累加器和取反操作,当以累加器A为目的操作数时,为目的操作数时,对对P标志有影响;标志有影响; 循环指令循环指令是对累加器是对累加器A的循环移位操作,的循环移位操作,包括左、右方向以及带与不带进位位等移位包括左、右方向以及带与不带进位位等移位方式,移位操作时,带进位的循环移位对方式,移位操作时,带进位的循环移位对CY和和P标志有影响;标志有影响; 累加器清累加器清0操作对操作对P标志有影响。标志有影响。 1 1、逻辑与逻辑与datadir

49、ectdirect data# Adirectdirect A direct ANL)(;)()(;,dataAA data# RiAA Ri directAA direct RnA A Rn A ANL)(;)()(;)()(;)()(;, 前前2条指令的功能是把源操作数与直接地址指示的条指令的功能是把源操作数与直接地址指示的单元内容相与,结果送入直接地址指示的单元。单元内容相与,结果送入直接地址指示的单元。 后后4条指令的功能是把源操作数与累加器条指令的功能是把源操作数与累加器A的内容相的内容相与,结果送入累加器与,结果送入累加器A中。中。例例 若(若(A)=C3H,(,(R0)=AAH,

50、执行指令,执行指令 ANL A,R0 之后,(之后,(A)=82H。2 2、逻辑或逻辑或datadirectdirect data# Adirectdirect A direct ORL)(;)()(;,dataAA data# RiAA Ri directAA direct RnA A Rn A ORL)(;)()(;)()(;)()(;,前前2条指令的功能是把源操作数与直接地址指示的单条指令的功能是把源操作数与直接地址指示的单元内容相或,结果送入直接地址指示的单元。元内容相或,结果送入直接地址指示的单元。后后4条指令的功能是把源操作数与累加器条指令的功能是把源操作数与累加器A的内容相或,的

51、内容相或,结果送入累加器结果送入累加器A中。中。例例 若(若(A)=C3H,(,(R0)=55H,执行指令,执行指令ORL A,R0 之后,(之后,(A)=D7H。例例: 将累加器A中的低4位传送到P1口的低4位,但P1口的高4位需保持不变。解:解:当需要只改变字节数据中某些位,而其它位保持不变,不能采用直接传送方法,只能通过逻辑运算才能完成,具体程序如下:MOV R0,A ; A的内容暂存R0ANL A, #0FH ;屏蔽A的高4位,低4位不变ANL P1,#0F0H ;屏蔽P1的低4位,高4位不变ORL P1,A ;实现低4位传送MOV A,R0 ;恢复A的内容 3 3、逻辑异或逻辑异或d

52、atadirectdirect data# Adirectdirect A direct XRL)(;)()(;,dataAA data# RiAA Ri directAA direct RnA A Rn A XRL)(;)()(;)()(;)()(;, 前前2条指令的功能是把源操作数与直接地址指示的单元内条指令的功能是把源操作数与直接地址指示的单元内容异或,结果送入直接地址指示的单元。容异或,结果送入直接地址指示的单元。 后后4条指令的功能是把源操作数与累加器条指令的功能是把源操作数与累加器A的内容异或,结的内容异或,结果送入累加器果送入累加器A中。中。例例 若(若(A)=C3H,(,(R0

53、)=AAH,执行指令,执行指令 XRL A,R0 之后,(之后,(A)=69H。例例: 若若(A)=B5H=10110101B,执行下列操作:,执行下列操作: XRL A,#0F0H ; A的高的高4位取反,低位取反,低4位保留,位保留, (A)=01000101B=45H MOV 30H,A ;(30H)=45H XRL A,30H ;自身异或使;自身异或使A清零清零4 4、累加器清累加器清0 0和取反和取反CLR A CPL;A 0 ;A A 这两条指令的功能分别是把累加器这两条指令的功能分别是把累加器A的内容清的内容清 0 和取反,结果仍在和取反,结果仍在A中。中。 例例 若(若(A)=

54、A5H,执行指令,执行指令 CLR A 之后,之后,(A)=00H。 5 5、累加器循环移位累加器循环移位R RR R C A R LR L C 有时有时“累加器累加器A内容乘内容乘2”或或 “累加器累加器A内容除内容除2”的任务可以利用左移或右移的任务可以利用左移或右移指令方便地完成。指令方便地完成。 例:若(例:若(A)= BDH = 1011 1101B,(,(CY)0。执行指令。执行指令RLC A后,(后,(CY)=1,(,(A)= 0111 1010B = 7AH,(,(CY)1。 结果为:结果为:17AH(378)2BDH(189)。)。 3.3.4 控制转移类指令(控制转移类指令

55、(17条)条) 通常情况下,程序的执行是顺序进行通常情况下,程序的执行是顺序进行的,但也可以根据需要的,但也可以根据需要改变程序的执行改变程序的执行顺序顺序,这种情况,这种情况称作程序转移称作程序转移。 控制程序的转移要利用转移指令。控制程序的转移要利用转移指令。80C51的转移指令有的转移指令有无条件转移、有条无条件转移、有条件转移件转移及及子程序调用与返回子程序调用与返回等等。一、无条件转移一、无条件转移1、 短跳转短跳转 AJMP addr11 ; PC (PC)+ 2, ; PC100 addr11 该指令执行时,先将该指令执行时,先将PC的内容加的内容加2(这时(这时PC指向指向的是

56、的是AJMP的下一条指令),然后把指令中的下一条指令),然后把指令中11位地址位地址码传送到码传送到PC100,而,而PC1511保持原内容不变。保持原内容不变。2021-10-1685短跳转短跳转AJMP addr11 AJMP addr11 ;PC PC (PCPC)+ 2+ 2,PC10PC10 0 addr11 0 addr11 当前当前PC的高的高5位(即下条指令的存储地址的高位(即下条指令的存储地址的高5位)可以确定位)可以确定32个个2KB段之一。所以,段之一。所以,AJMP指令指令的转移范围为包含的转移范围为包含AJMP下条指令在内的下条指令在内的2KB区间。区间。2、长跳转、

57、长跳转 LJMP addr16 ;PC addr16 第一字节为操作码,该指令执行时,将指令的第一字节为操作码,该指令执行时,将指令的第二、三字节地址码分别装入指令计数器第二、三字节地址码分别装入指令计数器PC的的高高8位和低位和低8位中,程序无条件地转移到指定的位中,程序无条件地转移到指定的目标地址去执行。目标地址去执行。 LJMP提供的是提供的是16位地址,因此程序可以转向位地址,因此程序可以转向64KB的程序存储器地址空间的任何单元。的程序存储器地址空间的任何单元。 例例 若标号若标号“NEWADD”表示转移目标地址表示转移目标地址1234H。执行指令执行指令 LJMP NEWADD 时

58、,两字节的目标地址将装时,两字节的目标地址将装入入PC中,使程序转向目标地址中,使程序转向目标地址 1234H 处运行。处运行。2021-10-1688长跳转长跳转LJMP addr16 LJMP addr16 ;PC addr16 PC addr16 3、相对转移、相对转移 SJMP rel ;PC (PC)+ 2,PC (PC)+ rel 第一字节为操作码,第二字节为相对偏移量第一字节为操作码,第二字节为相对偏移量 rel,rel 是一个带符号的偏移字节数(是一个带符号的偏移字节数(2的补码),取值范围为的补码),取值范围为 127 128(00H7FH对应表示对应表示0 127,80HF

59、FH对应表示对应表示1281)。负数表示反向转移,正数表)。负数表示反向转移,正数表示正向转移。示正向转移。 rel 可以是一个转移目标地址的标号,由汇编程序在汇可以是一个转移目标地址的标号,由汇编程序在汇编过程中自动计算偏移地址,并填入指令代码中。在手工编过程中自动计算偏移地址,并填入指令代码中。在手工汇编时,可用转移目标地址减转移指令所在的源地址,再汇编时,可用转移目标地址减转移指令所在的源地址,再减转移指令字节数减转移指令字节数2得到偏移字节数得到偏移字节数rel。2021-10-1690【例】若【例】若“NEWADD”NEWADD”为地址为地址1022H1022H,PCPC的当前值为的

60、当前值为1000H1000H。执行。执行指令指令 SJMP NEWADD SJMP NEWADD 后,程序将转向后,程序将转向1022H1022H处执行(处执行(rel=20H= rel=20H= 1022H1022H1000H1000H2 2)。解析如下:)。解析如下:例:例:0100H单元有一条指令,单元有一条指令,sjmp 21h,则转至则转至01002210123H。 若相对地址为若相对地址为F0H(负数),则转至(负数),则转至01002FFF0H00F2H。 当偏移字节为当偏移字节为FEH时,时,SJMP将原地跳将原地跳转。(转圈)转。(转圈)例:例:0060H有指令,有指令,SJ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论