1、第第3章章 80C51 单片机指令系统单片机指令系统 3.1 单片机指令系统概述 3.2 80C51 单片机指令寻址方式 3.3 80C51 单片机指令分类介绍http:/ 单片机指令系统概述单片机指令系统概述 指令:指令:规定计算机基本操作的语句或命令。指规定计算机基本操作的语句或命令。指 令通常有两个组成部分:操作码和操作数。令通常有两个组成部分:操作码和操作数。操作码:用于规定指令进行什么操作。操作码:用于规定指令进行什么操作。操作数:指令操作的对象,可以是具体的数据、数据操作数:指令操作的对象,可以是具体的数据、数据 的地址或符号。的地址或符号。例如:例如:MOV A,#20H,指令系
2、统指令系统:一个单片机所能执行的指令集合。一个单片机所能执行的指令集合。指令系统由单片机生产厂商定义的,指令系统由单片机生产厂商定义的,由由CPU 的内部结构决定的。不同的单片机,其指令的内部结构决定的。不同的单片机,其指令 系统不尽相同。系统不尽相同。http:/ 器。器。Ri:可用作间接寻址的寄存器,只能是:可用作间接寻址的寄存器,只能是R0,R1两个寄存器,两个寄存器,i=0,1。direct:8位直接地址,在指令中表示直接寻址方式,寻址范围位直接地址,在指令中表示直接寻址方式,寻址范围 256个单元。个单元。#data:8位立即数。位立即数。#data16:16位立即数。位立即数。ad
3、dr16:表示:表示16位目的地址,主要用于位目的地址,主要用于LCALL和和LJMP指令指令 中。中。addr11:表示:表示11位目的地址,主要用于位目的地址,主要用于ACALL和和AJMP指令指令 中。中。3.1 单片机指令系统概述单片机指令系统概述http:/ rel:相对转移指令中的偏移量,为:相对转移指令中的偏移量,为8位带符号补码。位带符号补码。DPTR:数据指针。:数据指针。bit:内部:内部RAM(包括专用寄存器)中的直接寻址位。(包括专用寄存器)中的直接寻址位。A:累加器累加器 ACC:直接寻址方式的累加器。:直接寻址方式的累加器。B:寄存器寄存器B C:进位标志位。也称为
4、累加位。进位标志位。也称为累加位。/:加在位地址的前面,表示对该位状态取反。加在位地址的前面,表示对该位状态取反。:间接寻址寄存器的前缀标志。间接寻址寄存器的前缀标志。(X):某寄存器或某单元中的内容。):某寄存器或某单元中的内容。(X):由:由“X”间接寻址单元中的内容。间接寻址单元中的内容。:箭头左边的内容被箭头右边的内容所取代。箭头左边的内容被箭头右边的内容所取代。3.1单片机指令系统概述单片机指令系统概述http:/ 80C51 单片机指令寻址方式单片机指令寻址方式 寻址方式,通常是指某一个寻址方式,通常是指某一个CPU指令系统中指令系统中规定的寻找操作数所在地址的方式,或者说通过规定
5、的寻找操作数所在地址的方式,或者说通过什么样的方式找到操作数。寻址方式的方便与快什么样的方式找到操作数。寻址方式的方便与快捷是衡量捷是衡量CPU性能的一个重要方面,性能的一个重要方面,MCS51单单片机有七种寻址方式。片机有七种寻址方式。http:/ A,R0特点:特点:由指令指出某一个寄存器的内容作为操作数。存由指令指出某一个寄存器的内容作为操作数。存 放操作数的寄存器在指令代码中放操作数的寄存器在指令代码中不占据单独的一不占据单独的一 个字节,而是嵌入(隐含)到操作码字节中个字节,而是嵌入(隐含)到操作码字节中。寻址范围:寻址范围:四组通用寄存器四组通用寄存器Rn(R0R7)、部分专用)、
6、部分专用寄存器(寄存器(A,B,DPTR,Cy)。)。MOV A,Rn;A(Rn)其中其中n为为07之一,之一,Rn是工作寄存是工作寄存 器。器。MOV Rn,A;Rn(A)MOV B,A;B(A)3.2 80C51 单片机指令寻址方式单片机指令寻址方式http:/ A,3AH特点:特点:指令中含有操作数的指令中含有操作数的地址地址。该地址指出了参与操。该地址指出了参与操 作的数据所在的字节单元地址或位地址。计算机作的数据所在的字节单元地址或位地址。计算机 执行它们时便可根据直接地址找到所需要的操作数。执行它们时便可根据直接地址找到所需要的操作数。只能使用只能使用8位二进制数表示的地址。位二进
7、制数表示的地址。寻址范围:寻址范围:片内片内RAM区(低区(低128字节)、专用寄存器。字节)、专用寄存器。3.2 80C51 单片机指令寻址方式单片机指令寻址方式http:/ A,52H ;把片内;把片内RAM字节地址字节地址52H单元的内单元的内容送累加器容送累加器A中。中。MOV 52H,A ;把;把A的内容传送给片内的内容传送给片内RAM的的52H单元中。单元中。MOV 50H,60H;把片内;把片内RAM字节地址字节地址60H单元的内单元的内容送到容送到50H单元中。单元中。MOV IE,#40H;把立即数;把立即数40H送到中断允许寄存器送到中断允许寄存器 IE。IE为专用功能寄存
8、器,其字节为专用功能寄存器,其字节地址为地址为0A8H。该指令等价于该指令等价于MOV 0A8H,#40H。INC 60H ;将地址;将地址60H单元中的内容自加单元中的内容自加1。3.2 80C51 单片机指令寻址方式单片机指令寻址方式http:/ 3.2 80C51 单片机指令寻址方式单片机指令寻址方式http:/ A,R0特点:特点:指令给出的寄存器中存放的是操作数地址。寄存器间指令给出的寄存器中存放的是操作数地址。寄存器间 接寻址是一种二次(间接)寻找操作数的寻址方式,接寻址是一种二次(间接)寻找操作数的寻址方式,寄存器前边必须加前缀符号寄存器前边必须加前缀符号“”。不能用于寻址特殊不
9、能用于寻址特殊 功能寄存器功能寄存器SFR。3.2 80C51 单片机指令寻址方式单片机指令寻址方式http:/ AMOV A,R0 R0例如:例如:MOV DPTRMOV DPTR,#3456H#3456H ;DPTRDPTR3456H3456H MOVX A MOVX A,DPTR DPTR ;A A(DPTRDPTR)寄存器间接寻址方式示意图寄存器间接寻址方式示意图 3.2 80C51 单片机指令寻址方式单片机指令寻址方式http:/ 和和POP)为)为 SP作间址寄存器的作间址寄存器的间址寻址方式。间址寻址方式。3.2 80C51 单片机指令寻址方式单片机指令寻址方式http:/ MO
10、V A,#3AHMOV DPTR,#data16特点:特点:指令中直接含有所需的操作数。该操作数可以是指令中直接含有所需的操作数。该操作数可以是8位的,也可以是位的,也可以是16位的,常常处在指令的第二字节和第位的,常常处在指令的第二字节和第三字节的位置上。立即数通常使用三字节的位置上。立即数通常使用#data或或#data16表表示,在立即数前面加示,在立即数前面加“#”标志,用以和直接寻址中的直标志,用以和直接寻址中的直接地址(接地址(direc或或bit)相区别。)相区别。3.2 80C51 单片机指令寻址方式单片机指令寻址方式http:/ A,#52H ;A52H MOV DPTR,#
11、5678H ;DPTR5678H 立即寻址示意图 3.2 80C51 单片机指令寻址方式单片机指令寻址方式http:/ 5.变址寻址方式变址寻址方式 定义:定义:这种寻址方式用于访问程序存储器中的数据表格,这种寻址方式用于访问程序存储器中的数据表格,以以基址寄存器(基址寄存器(DPTR或或PC)的内容为基本地址,加的内容为基本地址,加 上变址寄存器上变址寄存器A的内容形成的内容形成16位的地址,访问程序位的地址,访问程序 存储器中的数据表格。这种寻址方式称为基址加变存储器中的数据表格。这种寻址方式称为基址加变 址寄存器间接寻址,简称为变址寻址。址寄存器间接寻址,简称为变址寻址。例如:例如:MO
12、VC A,A+DPTR ;A(A)+(DPTR)MOVC A,A+PC JMP DPTR 仅有仅有3条变址寻址指令。条变址寻址指令。3.2 80C51 单片机指令寻址方式单片机指令寻址方式http:/ 特点:特点:指令操作码中隐含作为基址寄存器用的指令操作码中隐含作为基址寄存器用的DPTR(或(或PC)和作为变址用的累加器)和作为变址用的累加器A。在执行变址寻址指令时,。在执行变址寻址指令时,80c51单片机先把基地址(单片机先把基地址(DPTR或或PC 的内容)和地址偏的内容)和地址偏移量(移量(A的内容)相加,以形成操作数地址,再由操作数地的内容)相加,以形成操作数地址,再由操作数地址找到
13、操作数,并完成相应的操作。址找到操作数,并完成相应的操作。变址寻址方式是单字节变址寻址方式是单字节指令。指令。3.2 80C51 单片机指令寻址方式单片机指令寻址方式http:/ 80C51 单片机指令寻址方式单片机指令寻址方式http:/ 6.位寻址方式位寻址方式 MCS-51单片机中设有独立的位处理器。位操作指令单片机中设有独立的位处理器。位操作指令能对内部能对内部RAM中的位寻址区(中的位寻址区(20H2FH)和某些有位地)和某些有位地址的特殊功能寄存器进行位操作。址的特殊功能寄存器进行位操作。定义:定义:指令中给出的操作数是一个可单独寻址的位地址,这指令中给出的操作数是一个可单独寻址的
14、位地址,这 种寻址方式称为位寻址方式。种寻址方式称为位寻址方式。MOV C,3AH特点:特点:位寻址是直接寻址方式的一种,其特点是对位寻址是直接寻址方式的一种,其特点是对8位二进位二进 制数中的某一位的地址进行操作。制数中的某一位的地址进行操作。例如:例如:SETB TR0 ;TR01 CLR 00H ;(00H)0 MOV C,57H ;将;将57H位地址的内容传送到位地址的内容传送到C中中 ANL C,5FH;将;将5FH位与进位位位与进位位C相与,结果在相与,结果在C中中 3.2 80C51 单片机指令寻址方式单片机指令寻址方式http:/ 单元地址为单元地址为20H2FH,共,共16个
15、单元个单元128位,位地址是位,位地址是00H 7FH。两种表示方法:一种是位地址;另一种是单元地址加位。两种表示方法:一种是位地址;另一种是单元地址加位。v专用寄存器的可寻址位(专用寄存器的可寻址位(4种表示方法)种表示方法)直接使用位地址。例如直接使用位地址。例如PSW寄存器位寄存器位5地址为地址为0D5H。位名称表示方法。例如位名称表示方法。例如PSW寄存器位寄存器位5是是F0标志位,则可使标志位,则可使 用用F0表示该位。表示该位。单元地址加位数的表示方法。例如单元地址加位数的表示方法。例如PSW寄存器位寄存器位5,表示为,表示为 0D0H.5。专用寄存器符号加位数的表示方法。例如专用
16、寄存器符号加位数的表示方法。例如PSW寄存器的位寄存器的位5,表示为表示为PSW.5 3.2 80C51 单片机指令寻址方式单片机指令寻址方式http:/ rel;SJMP rel;(PCPC)(PCPC)+2+rel+2+rel特点:特点:目的地址指令地址指令字节数偏移量目的地址指令地址指令字节数偏移量 相对寻址方式是为实现程序的相对转移而设计的,为相相对寻址方式是为实现程序的相对转移而设计的,为相对转移指令所使用,其指令码中含有相对地址偏移量,对转移指令所使用,其指令码中含有相对地址偏移量,能生成浮动代码。能生成浮动代码。寻址范围:寻址范围:只能对程序存储器只能对程序存储器ROMROM进行
17、寻址。相对地址偏移进行寻址。相对地址偏移量(量(rel rel)是一个带符号的)是一个带符号的8 8位二进制补码,其取值范围位二进制补码,其取值范围为为 128128127127(以(以PCPC为中间的为中间的256256个字节范围)。个字节范围)。relrel可以是标号。可以是标号。3.2 80C51 单片机指令寻址方式单片机指令寻址方式http:/ 80C51 单片机指令分类介绍单片机指令分类介绍 MCS-51指令系统有指令系统有42种助记符,代表了种助记符,代表了33种种功能,指令助记符与各种可能的寻址方式相结合,功能,指令助记符与各种可能的寻址方式相结合,构成构成80C51单片机的单片
18、机的111条条指令指令。这些指令按功能。这些指令按功能分成分成5大大类:类:数据传送类(数据传送类(29条)条)算术运算类(算术运算类(24条)条)逻辑运算及移位类(逻辑运算及移位类(24条)条)控制转移类(控制转移类(17条)条)位操作类位操作类(17条)条)http:/ 数据传送类指令数据传送类指令 数据传送类指令一般的操作是把源操作数传送到数据传送类指令一般的操作是把源操作数传送到指令所指定的目标地址。指令执行后,源操作数保持不指令所指定的目标地址。指令执行后,源操作数保持不变,目的操作数为原操作数所替代。变,目的操作数为原操作数所替代。数据传送类指令用到的助记符有:数据传送类指令用到的
19、助记符有:MOVMOV,MOVXMOVX,MOVCMOVC,XCHXCH,XCHDXCHD,PUSHPUSH,POPPOP,SWAPSWAP。数据一般传送指令的助记符数据一般传送指令的助记符“MOV”MOV”表示表示:格式:格式:MOV MOV 目的操作数目的操作数,源操作数源操作数 功能:目的操作数功能:目的操作数(源操作数中的数据)(源操作数中的数据)源操作数可以是:源操作数可以是:A A、RnRn、directdirect、RiRi、#data#data 目的操作数可以是:目的操作数可以是:A A、RnRn、directdirect、RiRi数据传送指令一般不影响标志。数据传送指令一般不
20、影响标志。3.3 80C51 单片机指令分类介绍单片机指令分类介绍http:/ 以累加器为目的操作数的内部数据传送指令 MOVA,Rn;A(Rn)MOVA,direct;A(direct)MOVA,Ri;A(Ri)MOVA,#data;Adata3.3 80C51 单片机指令分类介绍单片机指令分类介绍http:/ 数据传送到工作寄存器Rn的指令 MOVRn,A;Rn(A)MOVRn,direct;Rn(direct)MOVRn,#data;Rndata3.3 80C51 单片机指令分类介绍单片机指令分类介绍http:/ 3数据传送到内部数据传送到内部RAMRAM单元或特殊功能寄存器单元或特殊功
21、能寄存器SFRSFR的指令的指令 MOVdirect,A;direct(A)MOVdirect,Rn;direct(Rn)MOVdirect1,direct2;direct1(direct2)MOVdirect,Ri;direct(Ri)MOVdirect,#data;direct#dataMOVRi,A;(;(Ri()()MOVRi,direct;(;(Ri)(direct)MOVRi,#data;(;(Ri)dataMOVDPTR,#data16;DPTRdata163.3 80C51 单片机指令分类介绍单片机指令分类介绍http:/ 片内数据片内数据RAM及寄存器的数据传送指令及寄存器的
22、数据传送指令MOV、PUSH和和POP共共18条,如图所示。条,如图所示。DPTRRiARn#datadirectDPTRMOVMOVMOVMOVMOVMOVMOVMOVMOVMOVPUSHPOP3.3 80C51 单片机指令分类介绍单片机指令分类介绍http:/ MOV R1,30H 的结果的结果 解:执行后,直接地址解:执行后,直接地址70H(即寄存器(即寄存器R1的内容)的内容的内容)的内容为为35H,30H与与R1的内容不变。的内容不变。例例2:已知(:已知(70H)=60H,(60H)=20H,P1=0B7H,执行下执行下面指令,说明结果。面指令,说明结果。MOV R0,#70H;R
23、0-70H MOV A,R0;A-60H MOV R1,A ;R1-60H MOV B,R1;B-20H MOV R0,P1;70H-0B7H 解:结果是解:结果是:(70H)=0B7H,(60H)=20H,B=20H (R1)=60H,(R0)=70H3.3 80C51 单片机指令分类介绍单片机指令分类介绍http:/ 指出下面指令的错误:指出下面指令的错误:Mov R1,R3 Mov Rn,Ri Mov A,R3解:解:Mov R1,R3 无寄存器之间直接传送指令无寄存器之间直接传送指令 Mov Rn,Ri,无寄存器间接寻址指令,无寄存器间接寻址指令 Mov A,R3,间接寻址只能是,间接
24、寻址只能是R1或或R03.3 80C51 3.3 80C51 单片机指令分类介绍单片机指令分类介绍http:/ 2.外部数据存储器读外部数据存储器读/写指令写指令(1)Ri作间址寄存器的外部作间址寄存器的外部RAM单元读单元读/写指令写指令 MOVX A,Ri(Ri间接寻址的外部间接寻址的外部RAM单元读单元读)MOVX Ri,A(Ri间接寻址的外部间接寻址的外部RAM单元写单元写)(2)DPTR作间址寄存器的外部作间址寄存器的外部RAM单元读单元读/写指令写指令 MOVX A,DPTR(DPTR间接寻址的外部间接寻址的外部RAM单元读单元读)MOVX DPTR,A(DPTR间接寻址的外部间接
25、寻址的外部RAM单元写单元写)3.程序存储器读指令组(只能读不能写,单字节指令)程序存储器读指令组(只能读不能写,单字节指令)MOVC A,A+DPTR(程序存储器读)(程序存储器读)MOVC A,A+PC(程序存储器读)(程序存储器读)注意:读写程序存储器时,只能通过注意:读写程序存储器时,只能通过A3.3 80C51 3.3 80C51 单片机指令分类介绍单片机指令分类介绍http:/ 片外数据存储器数据传送指令片外数据存储器数据传送指令MOVX共共4条,如图条,如图:DPTRRiAMOVXMOVX 程序存储器查表指令程序存储器查表指令MOVC共共2条,如图所示。条,如图所示。A+DPTR
26、A+PCAMOVCMOVC3.3 80C51 3.3 80C51 单片机指令分类介绍单片机指令分类介绍http:/ HBA:INC A2001 MOVC A,A+PC2002 RET2003 DB 30H2004 DB 31H200C DB 39H200D DB 41H200E DB 42H200F DB 43H2010 DB 44H2011 DB 45H2012 DB 46H例:假定例:假定A=00H。程序执行情况:程序执行情况:http:/ XCH A,Rn(寄存器寻址字节交换)(寄存器寻址字节交换)XCH A,direct(直接寻址字节交换)(直接寻址字节交换)XCH A,Ri(Ri间接
27、寻址字节交换)间接寻址字节交换)(2)半字节交换指令)半字节交换指令 XCHD A,Ri(Ri间接寻址半字节交换)间接寻址半字节交换)(3)累加器高低半字节交换指令)累加器高低半字节交换指令 SWAP A(累加器内容高低半字节交换)(累加器内容高低半字节交换)3.3 80C51 3.3 80C51 单片机指令分类介绍单片机指令分类介绍http:/ A,R0;(R0)30H,(A)6FH,(30H)85HSWAPA ;(A)56H3.3 80C51 3.3 80C51 单片机指令分类介绍单片机指令分类介绍http:/ PUSH direct(进栈)(进栈)POP direct(出栈)(出栈)例例
28、5:设:设(SP)=30H,ACC=60H,B=70H 执行执行 PUSH ACC PUSH B后的结果如何?后的结果如何?解:解:PUSH ACC;(;(SP)-31H,(31H)-60H PUSH B;(SP)-32H,(32H)-70H 结果为:(结果为:(SP)=32H,(,(31)(32H)=70H3.3 80C51 3.3 80C51 单片机指令分类介绍单片机指令分类介绍http:/ 例如:进入中断服务程序时,把程序状态寄存器例如:进入中断服务程序时,把程序状态寄存器PSW、累加、累加器器A、数据指针、数据指针DPTR进栈保护。设当前进栈保护。设当前SP为为60H。则程序段执行后,
29、则程序段执行后,SP内容修改为内容修改为64H,而,而61H、62H、63H、64H单元中依次栈入单元中依次栈入PSW、A、DPL、DPH的内容,当中断的内容,当中断服务程序结束之前,如下程序段(服务程序结束之前,如下程序段(SP保持保持64H不变)不变)指令执行之后,指令执行之后,SP内容修改为内容修改为60H,而,而64H、63H、62、61H单元的内容依次弹出到单元的内容依次弹出到DPH、DPL、A、PSW中。中。PUSH PSWPUSH ACCPUSH DPLPUSH DPHPOP DPHPOP DPLPOP ACCPOP PSW3.3 80C51 3.3 80C51 单片机指令分类介
30、绍单片机指令分类介绍http:/ 算术运算类指令算术运算类指令1加法指令加法指令 加法指令分为普通加法指令、带进位加法指令和加加法指令分为普通加法指令、带进位加法指令和加1指令。指令。(1)普通加法指令)普通加法指令 ADDA,Rn;A(A)+(Rn)ADDA,direct;A(A)+(direct)ADDA,Ri;A(A)+(Ri)ADDA,#data;A(A)+data算术运算指令都是按算术运算指令都是按8位二进制无符号数执行的。位二进制无符号数执行的。http:/ A,R0 10000101 +10101111 1 00110100结果:(结果:(A)=34H;Cy=1;AC=1;OV=
31、1。对于加法,溢出只能发生在两个加数符号相同的情对于加法,溢出只能发生在两个加数符号相同的情况。在进行带符号数的加法运算时,溢出标志况。在进行带符号数的加法运算时,溢出标志OV是一是一个重要的编程标志,利用它可以判断两个带符号数相个重要的编程标志,利用它可以判断两个带符号数相加,和数是否溢出。加,和数是否溢出。3.3.2 算术运算类指令算术运算类指令http:/ A,20H结果:(结果:(A)=85H;Cy=1;AC=1;OV=0。ADDCA,Rn;A(A)+(Rn)+(Cy)ADDCA,direct;A(A)+(direct)+(Cy)ADDCA,Ri;A(A)+(Ri)+(Cy)ADDCA
32、,#data;A(A)+data+(Cy)3.3.2 算术运算类指令算术运算类指令http:/ 执行如下指令:执行如下指令:INCA;执行后(;执行后(A)13HINCR3;执行后(;执行后(R3)10HINC35H;执行后(;执行后(35H)4BHINCR0;执行后(;执行后(56H)01H INCA;A(A)+1INCRn;Rn(Rn)+1INCdirect;direct(direct)+1INCRi;(Ri)(Ri)+1INCDPTR;DPTR(DPTR)+13.3.2 算术运算类指令算术运算类指令http:/ A执行该指令时,判断执行该指令时,判断A中的低中的低4位是否大于位是否大于9
33、,若满足大,若满足大于则低于则低4位做加位做加6操作;操作;同样,同样,A中的高中的高4位大于位大于9则高则高4位加位加6操作。操作。例如:有两个例如:有两个BCD数数36与与45相加,结果应为相加,结果应为BCD码码81,程序如下:程序如下:MOV A,#36H ADD A,#45H DA A得结果得结果7BH;第三条指令对累加器;第三条指令对累加器A进行十进制调整,进行十进制调整,低低4位(为位(为0BH)大于)大于9,因此要加,因此要加6,最后得到调整的,最后得到调整的BCD码码81。3.3.2 算术运算类指令算术运算类指令http:/ 2 减法指令减法指令(1)带借位减法指令)带借位减
34、法指令(2)减)减1指令指令 SUBBA,Rn;A(A)(Rn)(Cy)SUBBA,direct;A(A)(direct)(Cy)SUBBA,Ri;A(A)(Ri)(Cy)SUBBA,#data;A(A)data(Cy)DECA;A(A)1DECRn;Rn(Rn)1DECdirect;direct(direct)1DECRi;(Ri)(Ri)13.3.2 算术运算类指令算术运算类指令http:/ 乘法指令完成单字节的乘法,只有一条指令:乘法指令完成单字节的乘法,只有一条指令:MUL AB ;AB (A)(B)【例如例如】(A)50H,(,(B)0A0H,执行指令:,执行指令:MULAB 结果:
35、(结果:(B)32H,(,(A)00H(即乘积为(即乘积为3200H),),Cy0,OV1。4.除法指令除法指令 除法指令完成单字节的除法,只有一条指令:除法指令完成单字节的除法,只有一条指令:DIV AB;A (A)/(B)的商的商 B (A)/(B)的余数的余数3.3.2 算术运算类指令算术运算类指令http:/ 算术运算类指令算术运算类指令http:/ 算术运算类指令 INCDECRiARn#datadirectBDPTRDPTRINCDECDAINCDECINCDECINCADD、ADDCSUBBADD、ADDCSUBBADD、ADDC、SUBBADD、ADDC、SUBBMULDIV3
36、.3.2 算术运算类指令算术运算类指令http:/ 1逻辑与指令逻辑与指令 【例如例如】(A)37H,(,(R0)0A9H执行指令:执行指令:ANLA,R0 结果:(结果:(A)21H ANLA,Rn;A(A)(Rn)ANLA,direct;A(A)(direct)ANLA,Ri;A(A)(Ri)ANLA,#data;A(A)dataANLdirect,A;direct(direct)(A)ANLdirect,#data;direct(direct)data3.3.3 逻辑运算及移位类指令逻辑运算及移位类指令http:/ 2 逻辑或指令逻辑或指令【例如例如】(A)37H,(,(P1)09H执行
37、指令:执行指令:ORLP1,A 结果:(结果:(A)3FH ORLA,Rn;A(A)(Rn)ORLA,direct;A(A)(direct)ORLA,Ri;A(A)(Ri)ORLA,#data;A(A)dataORLdirect,A;direct(direct)(A)ORLdirect,#data;direct(direct)data3.3.3 逻辑运算及移位类指令逻辑运算及移位类指令http:/ 逻辑异或指令逻辑异或指令 XRLA,Rn;A(A)(Rn)XRLA,direct;A(A)(direct)XRLA,Ri;A(A)(Ri)XRLA,#data;A(A)dataXRLdirect,A
38、;direct(direct)(A)XRLdirect,#data;direct(direct)data4 4 累加器清累加器清0 0和取反指令和取反指令 CLR A;对累加器;对累加器A清清“0”CPL A;对累加器;对累加器A按位取反按位取反3.3.3 逻辑运算及移位类指令逻辑运算及移位类指令ClearConverse Position Logical http:/ 当需要只改变字节数据的个别位而其余位不变时,当需要只改变字节数据的个别位而其余位不变时,只能通过逻辑运算完成。只能通过逻辑运算完成。应用举例应用举例 将累加器将累加器A的低的低4位传送到位传送到P1口的低口的低4位,但位,但P
39、1口口的高的高4位保持不变。位保持不变。MOV R0,A ANL A,#0FH ANL P1,#0F0H ORL P1,A MOV A,R03.3.3 逻辑运算及移位类指令逻辑运算及移位类指令http:/ 5 移位指令移位指令 RLA;累加器;累加器A的内容向左循环移的内容向左循环移1位位RLCA;累加器累加器A的内容带进位标志向左循环移的内容带进位标志向左循环移1位位RRA;累加器;累加器A的内容向右循环移的内容向右循环移1位位RRCA;累加器;累加器A的内容带进位标志向右循环移的内容带进位标志向右循环移1位位3.3.3 逻辑运算及移位类指令逻辑运算及移位类指令Recycle LeftRec
40、ycle Left Carryhttp:/ A6 A5 A4 A3 A2 A1 A0A7 A6 A5 A4 A3 A2 A1 A0A7 A6 A5 A4 A3 A2 A1 A0CYA7 A6 A5 A4 A3 A2 A1 A0CY循环左移指令示意图:循环左移指令示意图:RL A循环右移指令示意图:循环右移指令示意图:RR A带进位的循环左移指令示意图:带进位的循环左移指令示意图:RLC A带进位的循环右移指令示意图:带进位的循环右移指令示意图:RRC A3.3.3 逻辑运算及移位类指令逻辑运算及移位类指令http:/ 逻辑运算及移位类指令逻辑运算及移位类指令图3.10 逻辑运算类指令 http
41、:/ 控制转移类指令控制转移类指令 1.无条件转移指令无条件转移指令(1)绝对转移指令绝对转移指令 AJMP addr11 这是这是2KB范围内的无条件跳转指令,执行该指令时,范围内的无条件跳转指令,执行该指令时,先将先将PC+2,然后将,然后将addr11送入送入PC10PC0,而,而PC15PC11保持不变。保持不变。操作过程可表示为:操作过程可表示为:PC(PC)2 PC100addr11(2)短转移指令短转移指令 SJMP rel 操作过程可表示为:操作过程可表示为:PC(PC)2 PC(PC)rel 执行指令时,先将执行指令时,先将PC+2,再把指令中带符号的偏移量,再把指令中带符号
42、的偏移量加到加到PC上,得到跳转的目的地址送入上,得到跳转的目的地址送入PC。目标地址目标地址=源地址源地址+2+relAbsolute JumpShort Jumphttp:/ addr16 ;PC addr16 执行该指令时,将执行该指令时,将16位目标地址位目标地址addr16装入装入PC,程序无条件转向指定的目标地址。转移指令的目标地程序无条件转向指定的目标地址。转移指令的目标地址可在址可在64KB程序存储器地址空间的任何地方,不影响程序存储器地址空间的任何地方,不影响任何标志。任何标志。(4)变址寻址转移指令(散转指令)变址寻址转移指令(散转指令)JMP A+DPTR;PC(A)()
43、(DPTR)2.条件转移指令条件转移指令(1)累加器判零转移指令)累加器判零转移指令 JZrel;(;(A)=0转移转移JNZrel;(;(A)0转移转移3.3.4 控制转移类指令控制转移类指令 Long JumpJumpJump ZeroJump Not Zerohttp:/ 在在MCS-51中没有专门的比较指令,但提供了下面中没有专门的比较指令,但提供了下面4条条比较不相等转移指令;比较不相等转移指令;(3)减)减1不为不为0转移指令转移指令 DJNZ Rn,rel;R(R)1 0转移转移 DJNZ direct,rel;direct(direct)1 0转移转移CJNEA,direct,
44、rel;(;(A)(direct)转移)转移CJNEA,#data,rel;(;(A)data转移转移CJNERn,#data,rel;(;(Rn)data转移转移CJNERi,#data,rel;(;(Ri)data转移转移Decrease Jump Not ZeroCompare Jump Not Equalhttp:/ 条件转移类指令 RiARndirect#dataJZ、JNZDJNZDJNZCJNZCJNZCJNZCJNZrel-128+127http:/ ACALL addr11执行该指令时,执行该指令时,PC(PC)2SP(SP)1,(,(SP)(PC)70SP(SP)1,(,(
45、SP)(PC)158 PC100addr11 (2)长调用指令)长调用指令 LCALL addr16这条指令无条件调用位于这条指令无条件调用位于16位地址位地址addr16的子程序。的子程序。其操作过程如下:其操作过程如下:PC(PC)3SP(SP)1,(,(SP)(PC)70SP(SP)1,(,(SP)(PC)158 PC150addr16http:/ 子程序返回指令是把栈顶相邻两个单元的内容弹出子程序返回指令是把栈顶相邻两个单元的内容弹出送到送到PC,SP的内容减的内容减2,程序返回,程序返回PC值所指的指令处值所指的指令处执行。执行。RET指令通常安排在子程序的末尾,使程序能指令通常安排
46、在子程序的末尾,使程序能从子程序返回到主程序。从子程序返回到主程序。(4)中断返回指令)中断返回指令 RETI 这是指令的功能与这是指令的功能与RET指令相类似。通常安排在中指令相类似。通常安排在中断服务程序的最后。断服务程序的最后。(5)空操作指令空操作指令 NOP;PC PC1 空操作也是空操作也是CPU控制指令,它没有使程序转移的功控制指令,它没有使程序转移的功能。只消耗一个机器周期的时间。常用于程序的等待能。只消耗一个机器周期的时间。常用于程序的等待或时间的延迟。或时间的延迟。http:/ 位操作类指令1.位传送指令 2 位置位复位指令 SETB C;Cy 1 SETB bit;bit
47、 1 CLR C;Cy 0 CLR bit;bit 0MOVC,bit;Cy(bit)MOVbit,C;bit(Cy)http:/ 位逻辑运算指令ANL C,bit;Cy(Cy)(bit)ANL C,/bit;Cy(Cy)(/bit)ORL C,bit;Cy(Cy)(bit)ORL C,/bit;Cy(Cy)(/bit)CPL C ;Cy()CPL bit ;bit()Cybithttp:/ 位操作类指令 http:/ 位控制转移指令 JCrel;若(;若(Cy)=1,则转移,则转移PC(PC)+2+relJNCrel;若(;若(Cy)=0,则转移,则转移PC(PC)+2+relJBbit,r
48、el;若(;若(bit)=1,则转移,则转移PC(PC)+3+relJNBbit,rel;若(;若(bit)=0,则转移,则转移PC(PC)+3+relJBCbit,rel;若(;若(bit)=1,则转移,则转移PC(PC)+3+rel,并并bit0http:/ 位条件转移指令位条件转移指令 以上介绍了以上介绍了MCS-51指令系统,理解和掌握本章内指令系统,理解和掌握本章内容,是应用容,是应用MCS-51单片机的一个重要前提。单片机的一个重要前提。CbitJC、JNCrel-128+127JB、JBC、JNBhttp:/ A,#0FH;A=0FH,立即寻址,立即寻址MOV30H,#0F0H;
49、(30H)=F0H,立即寻址,立即寻址MOV R2,A;R2=0FH,寄存器寻址,寄存器寻址MOV R1,#30H;R1=30H,立即寻址,立即寻址MOV A,R1;A=F0H,寄存器间接寻址,寄存器间接寻址MOVDPTR,#1000H;DPTR=1000H,立即寻址,立即寻址MOV A,#50H;A=50H,立即寻址,立即寻址MOVC A,A+DPTR;A=5AH,基址变址寻址,基址变址寻址JMPA+DPTR;PC目标目标105AH,基址变址寻址,基址变址寻址CLR C;C=0,寄存器寻址,寄存器寻址MOV 20H,C;(;(20H)=0,寄存器寻址,寄存器寻址http:/ 20H单元的内容
50、传送到单元的内容传送到A中。中。(3)外部)外部RAM 30H单元的内容送到单元的内容送到R0。(4)外部)外部RAM 30H单元的内容送内部单元的内容送内部RAM20H单元。单元。(5)外部)外部RAM 1000H单元的内容送内部单元的内容送内部RAM 20H单元。单元。(6)程序存储器)程序存储器ROM 2000H单元的内容送单元的内容送R1。(7)ROM 2000H单元的内容送内部单元的内容送内部RAM 20H单元。单元。(8)ROM 2000H单元的内容送外部单元的内容送外部RAM 30H 单元。单元。(9)ROM 2000H单元的内容送外部单元的内容送外部RAM 1000H单元。单元