单片机原理及应用PPT电子教案第三章 MCS51的指令系统.ppt
2023/2/6,Email:,1,单片机原理及应用,主讲:覃业梅中南林业科技大学涉外学院,第三章 MCS-51的指令系统,2023/2/6,2,3.1 指令系统概述,MCS51单片机共有111条指令单字节指令49条双字节指令45条三字节指令17条单周期指令64条双周期指令45条四周期指令2条(乘法、除法)数据传送类指令28条算术运算类指令24条逻辑操作类指令25条位操作指令17条控制转移类指令17条,2023/2/6,3,3.2 指令格式,MCS51单片机汇编语言指令由操作码和操作数两部分组成。指令的格式为:【标号】:操作码【目的操作数】,【源操作数】;注释标号表示该指令的符号地址,可以是数字和字母或字母和数字的组合操作码规定了指令所实现的操作功能目的操作数指令执行后结果的存放的地方源操作数参加指令执行的数据来源注释是为方便用户阅读而加的注释,可有可无,注意:一条指令中可以没有标号、操作数和注释,但是一定要有操作码。,2023/2/6,4,3.3 指令系统的寻址方式,寻址方式:在指令中说明操作数所在地址的方法单片机存储数的地方有:片内RAM(地址为00H7FH)、通用寄存器(R0R7)、特殊功能寄存器(地址在80HFFH)以及片外RAM,除此以外,程序存储器还可以存放表格等数据。,2023/2/6,5,2023/2/6,6,-128127,2023/2/6,7,寻址问题,如果某条指令还有两个操作数,例如MOV A,data,它究竟属于立即寻址还是寄存器寻址?,这要看以哪个操作数为参照物了。因为操作数分为源操作数(数据从哪来)和目的操作数(数据准备送到哪去),所以在讨论上面这条指令时,对于源操作数data是“立即寻址”,但对于操作数A来说是“寄存器寻址”,2023/2/6,8,3.5 MCS-51指令系统分类介绍,符号指令的操作数中使用的符号Rn当前寄存器组R0R7Ri间接寻址的2个通用寄存器R1和R0direct内部RAM或SFR,表示对它们直接寻址data立即数rel相对转移偏移量bit内部RAM或SFR中的位地址/bit对bit取反addr11,addr1611或16位目的地址间址寄存器的前缀标志(X)X中的内容(X)由X寻址的单元中的内容,2023/2/6,9,1、数据传送类,DPTR,A+DPTR,A+PC,MOVC,空间是256B,空间是64KB,2023/2/6,10,堆栈操作PUSH direct;(SP)+1SP,(direct)SPPOP direct;(SP)direct,(SP)-1SP字节交换XCH A,XCHD A,Ri,注意:顺序,Rn directRi,2023/2/6,11,例题,在8051单片机片内RAM中,已知(30H)38H,(38H)40H,(40H)48H,(48H)90H,写出下列指令按顺序执行后的结果,MOV A,40HMOV R1,AMOV P1,0F0HMOV R1,#30HMOV DPTR,1234HMOV 40H,38HMOV R1,30HMOV 90H,R1MOV 48H,30HMOV A,R1MOV P0,P1,;(A)48H,;(R1)48H,;(P1)0F0H,;(90H)30H,;(DPTR)1234H,;(40H)40H,;(R1)38H,;(P1)38H,;(48H)38H,;(A)40H,;(P0)38H,执行后:(A)=40H,(DPTR)=1234H,(30H)=38H,(38H)=40H,(40H)=40H,(48H)=38H,(P1)=38H,(P0)=38H,2023/2/6,12,例题,1、(A)=85H,(DPTR)=2100H,执行MOVC A,A+DPTR2、A=12H,Ri=50H,(50H)=34H,则执行完指令XCHD A,Ri后的A,Ri,50H,执行后A51H,A14H,Ri50H,(50H)32H,2023/2/6,13,例题,MOV A,0MOV R0,61HMOV R0,0XCH A,50HXCHD A,R0MOV 60H,A,;R061H,;(61H)00H,;A37H,(50H)00H,;A30H,(61H)07H,若执行下列程序前,(50H)37H,,;A00H,;(60H)30H,执行完本段程序后,(50H)00H,(A)30H,(R0)61H,(61H)07H,(60H)30H。既这段程序的作用是:将片内RAM50H单元的8位数据中的低4位取出,送片内RAM61H,而高4位取出,送片内RAM60H,2023/2/6,14,2、算术操作类,(1)加法类 ADD/ADDC A,#dataDirectRnRi,*对CY、AC、OV、P 均有影响*PSW的组成,第6、7位不同时进位,则OV=1,2023/2/6,15,SUBB A,,#dataDirectRnRi,*对CY、AC、OV、P 均有影响*PSW的组成,第6、7位不同时借位,则OV=1,(2)减法类,2023/2/6,16,(3)加1,减1类,INC DEC*影响P,ADirectRnRiDPTR,ADirectRnRi,例:若A32H,(50H)F3H则执行完下列指令后,A?,50H?INC AINC 50H,解:A33H,(50H)F4H,2023/2/6,17,(4)BCD码调整,DA A*仅当两个BCD码相加时,才对其结果进行调整,该指令仅接在ADD/ADDC后*低半字节9或AC=1时,低4位+6,即(A)+6A 高半字节9或C=1时,高4位+6,即(A)+60HA,BCD码(Binary-Coded Decimal)或称二-十进制代码,是一种二进制的数字编码形式,用二进制编码的十进制代 码。这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。逢9(1001)进1。,2023/2/6,18,(5)乘除法,MUL AB;(A)(B)(B)(A)*当乘积255时,OV=1。DIV AB;(A)(A)为商;(B)(B)为余数*当(B)=0时,OV=1。,A存低8位,B存高8位,2023/2/6,19,例题,1、设(A)=53H,(R0)=0FCH执行指令:ADD A,R02、C=1,执行指令后A的内容MOV A,#20HMOV B,AADD A,BSUBB A,#10H,执行结果:(A)01010011+(R0)=+11111100(A)01001111CY=1,AC=0,OV=0,P=1。,执行结果:(A)=2FH,2023/2/6,20,3、逻辑运算类,CLRCPLRLRLCRRRRCSWAP,A,ANLORL A,XRL,DirectRnRi#data,ANLORL direct,XRL,A#data,一个操作数,两个操作数,带进位,2023/2/6,21,例题,1、若A36H,(30H)=1EH,则执行下列指令后,A=?,(30H)=?ANL A,0FHANL 30H,F0H,(A)06H,(30H)10H,执行完该指令后,(A)47H,则执行完该指令后,AC7H,Cy0,2、若A8EH,则执行指令 RR A后,A?,3、上题中,C=1,执行RRC A后,A=?C=?,2023/2/6,22,4、控制转移类,AJMP addr11;低11位地址变,高5位不变SJMP relLJMP addr16;16位地址JMP A+DPTRJZ(JNZ)rel;对A的判断CJNE A,direct,rel A,CJNE Rn,#data Ri,DJNZ Rn,relDJNZ direct,rel,无条件跳转,条件跳转,addr11,addr16,rel都可用标号表示,间接地址作为下条指令的地址送入PC,2023/2/6,23,ACALL addr11;低11位地址变,高5位不变LCALL addr16;16位地址RETRETINOP,调用,子程序,注意:在调用子程序时(SP)+1SP,(PCL)SP;(SP)+1SP,(PCH)SP;在子程序返回时(SP)PCH,(SP)-1SP;(SP)PCL,(SP)-1SP;,2023/2/6,24,例题,1、KWR:AJMP 100HKWR地址为1030H,执行后程序转移到;KWR地址为3030H,执行后程序转移到;2、KRD:SJMP PKRDPKRD地址为0123H,目的地址;KRD值为0100H。rel=0123H-(0100H+2)=21H3、PM:MOV R1,A RL A ADD A,R1 MOV DPTR,#PMTB JMP A+DPTR PMTB:LJMP PM0;转向命令0处理入口 LJMP PM1;转向命令1处理入口 LJMP PM2;转向命令2处理入口 LJMP PM3;转向命令3处理入口,1100H,3100H,2023/2/6,25,例题,4、若(SP)=60H,标号MA值为1123H,子程序SUB位于0345H,执行:MA:ACALL SUB结果:(SP)=,(61H)=,(62H)=,(PC)=。5、若(SP)=60H,标号STRT值为0100H,子程序DIR位于8100H,执行:STRT:ACALL DIR结果:(SP)=,(61H)=,(62H)=,(PC)=。6、若(SP)=62H,(62H)=07H,(61H)=30H,执行:RET结果:(SP)=,(PC)=。,62H,25H,11H,1345H,62H,03H,01H,8100H,60H,0730H,2023/2/6,26,5、位操作类,MOV C,bitMOV bit,CCLRCPL C或bitSETBANL C,bit或/bitORLJC(JNC)rel;对C的操作JB(JNB)bit,relJBC bit,rel,位传送,位条件转移,2023/2/6,27,指令练习,RR34:CLR A MOV R0,#30H MOV R7,#3 RR3L:XCHD A,R0 XCH A,R0 SWAP A XCH A,R0 INC R0 DJNZ R7,RR3L RET,2023/2/6,28,指令总结,字节:操作码1,立即数1,直接地址,相对地址周期:一般为1个机器周期(1)与direct组合的(除与A外),均为2(2)MOVC、MOVX、PUSH、POP 2(3)对DPTR的操作 2(4)控制转移类 2(5)位操作中有2个操作数的 2(6)乘除法 4,