8051单片机的指令列表

合集下载

8051指令和执行周期列表

8051指令和执行周期列表

8051指令和执行周期列表编辑导读:基于单片机实现遥控编码器PT2262的软件解码|基于SST89C58型单片机的远程灯控箱系统|Keil C51开发系统基本知识2|微型低功耗大容量心电记录仪的研制(图)|飞利浦51LPC系列单片机用于控制交流电机|基于MCU的多机并行通信|I2C总线的单片机C语言实现及其应用|基于PIC 单片机的热水控制器设计|Proteus软件调试实现的数字式指针温度计|PIC18FXX8单片机通用同步异步收发器的编程应用|正文:8051 INSTRUCTION SET1.Arithmetic operations:Mnemonic Byte CycADD A,@Ri 1 1ADD A,Rn 1 1ADD A,direct 2 1ADD A,#data 2 1ADDC A,@Ri 1 1ADDC A,Rn 1 1ADDC A,direct 2 1ADDC A,#data 2 1SUBB A,@Ri 1 1SUBB A,Rn 1 1SUBB A,direct 2 1 SUBB A,#data 2 1 INC A 1 1 INC @Ri 1 1 INC Rn 1 1 INC DPTR 1 1 INC direct 2 1 INC direct 2 1 DEC A 1 1DEC @Ri 1 1DEC Rn 1 1DEC direct 2 1MUL AB 1 4DIV AB 1 4DA A 1 12.Logical opreations:ANL A,@Ri 1 1XRL A,@Ri 1 1ANL A,Rn 1 1XRL A,Rn 1 1ANL A,direct 2 1XRL A,direct 2 1ANL A,#data 2 1XRL A,#data 2 1ANL direct,A 2 1 XRL direct,A 2 1ANL direct,#data 3 2 XRL direct,#data 3 2 ORL A,@Ri 1 1CLR A 1 1ORL A,Rn 1 1CPL A 1 1ORL A,direct 2 1RL A 1 1ORL A,#data 2 1RLC A 1 1ORL direct,A 2 1RR A 1 1ORL direct,#data 3 2 RRC A 1 1SWAP A 1 13.Data transfer:Mnemonic Byte Cyc MOV A,@Ri 1 1MOV DPTR,#data16 3 2 MOV A,Rn 1 1MOVC A,@A+DPTR 1 2 MOV A,direct 2 1 MOVC A,@A+PC 1 2 MOV A,#data 2 1 MOVX A,@Ri 1 2MOV @Ri,A 1 1MOVX A,@DPTR 1 2 MOV @Ri,direct 2 2 MOVX @Ri,A 1 2MOV @Ri,#data 2 1 MOVX @DPTR,A 1 2 MOV Rn,A 1 1PUSH direct 2 2 MOV Rn,direct 2 2 POP direct 2 2MOV Rn,#data 2 1 XCH A,@Ri 1 1MOV direct,A 2 1XCH A,Rn 1 1MOV direct,@Ri 2 2XCH A,direct 2 1MOV direct,Rn 2 2XCHD A,@Ri 1 1MOV direct,direct 3 2MOV direct,#data 3 24.Boolean variable manipulation: Mnemonic Byte CycCLR C 1 1ANL C,bit 2 2SETB C 1 1ANL C,/bit 2 2CPL C 1 1ORL C,bit 2 2。

8051单片机指令大全

8051单片机指令大全

1 MOV A,Rn 寄存器内容送入累加器2 MOV A,direct 直接地址单元中的数据送入累加器3 MOV A,@Ri 间接RAM 中的数据送入累加器4 MOV A,#tata 立即数送入累加器5 MOV Rn,A 累加器内容送入寄存器6 MOV Rn,direct 直接地址单元中的数据送入寄存器7 MOV Rn,#data 立即数送入寄存器8 MOV direct,A 累加器内容送入直接地址单元9 MOV direct,Rn 寄存器内容送入直接地址单元10 MOV direct,direct 直接地址单元中的数据送入另一个直接地址单元11 MOV direct,@Ri 间接RAM 中的数据送入直接地址单元12 MOV direct,#data 立即数送入直接地址单元13 MOV @Ri,A 累加器内容送间接RAM 单元14 MOV @Ri,direct 直接地址单元数据送入间接RAM 单元15 MOV @RI,#data 立即数送入间接RAM 单元16 MOV DRTR,#dat16 16 位立即数送入地址寄存器17 MOVC A,@A+DPTR 以DPTR为基地址变址寻址单元中的数据送入累加器18 MOVC A,@A+PC 以PC 为基地址变址寻址单元中的数据送入累加器19 MOVX A,@Ri 外部RAM(8 位地址)送入累加器20 MOVX A,@DPTR 外部RAM(16 位地址)送入累加器21 MOVX @Ri,A 累计器送外部RAM(8 位地址)22 MOVX @DPTR,A 累计器送外部RAM(16 位地址)23 PUSH direct 直接地址单元中的数据压入堆栈24 POP direct 弹栈送直接地址单元25 XCH A,Rn 寄存器与累加器交换26 XCH A,direct 直接地址单元与累加器交换27 XCH A,@Ri 间接RAM 与累加器交换28 XCHD A,@Ri 间接RAM 的低半字节与累加器低半字节交换算术操作类指令:1 ADD A,Rn 寄存器内容加到累加器2 ADD A,direct 直接地址单元的内容加到累加器3 ADD A,@Ri 间接ROM 的内容加到累加器4 ADD A,#data 立即数加到累加器5 ADDC A,Rn 寄存器内容带进位加到累加器6 ADDC A,direct 直接地址单元的内容带进位加到累加器7 ADDC A,@Ri 间接ROM 的内容带进位加到累加器8 ADDC A,#data 立即数带进位加到累加器9 SUBB A,Rn 累加器带借位减寄存器内容10 SUBB A,direct 累加器带借位减直接地址单元的内容11 SUBB A,@Ri 累加器带借位减间接RAM 中的内容12 SUBB A,#data 累加器带借位减立即数13 INC A 累加器加114 INC Rn 寄存器加115 INC direct 直接地址单元加116 INC @Ri 间接RAM 单元加117 DEC A 累加器减118 DEC Rn 寄存器减119 DEC direct 直接地址单元减120 DEC @Rj 间接RAM 单元减121 INC DPTR 地址寄存器DPTR 加122 MUL AB A 乘以B 两个八位无符号数相乘结果高八位放在B 低八位放在A23 DIV AB A 除以B,结果整数部分放在A 余数放在B24 DA A 累加器十进制调整实现BCD运算执行仅对进位位产生影响布尔变量操作类指令:1 CLR C 清进位位2 CLR bit 清直接地址位3 SETB C 置进位位4 SETB bit 置直接地址位5 CPL C 进位位求反6 CPL bit 置直接地址位求反7 ANL C,bit 进位位和直接地址位相“与”8 ANL C,/bit 进位位和直接地址位的反码相“与”9 ORL C,bit 进位位和直接地址位相“或”10 ORL C,/bit 进位位和直接地址位的反码相“或”11 MOV C,bit 直接地址位送入进位位12 MOV bit,C 进位位送入直接地址位13 JC rel 进位位为1 则转移14 JNC rel 进位位为0 则转移15 JB bit,rel 直接地址位为1 则转移16 JNB bit,rel 直接地址位为0 则转移17 JBC bit,rel 直接地址位为1 则转移,该位清零逻辑操作数指令:1 ANL A,Rn 累加器与寄存器相“与”2 ANL A,direct 累加器与直接地址单元相“与”3 ANL A,@Ri 累加器与间接RAM 单元相“与”4 ANL A,#data 累加器与立即数相“与”5 ANL direct,A 直接地址单元与累加器相“与”6 ANL direct,#data 直接地址单元与立即数相“与”7 ORL A,Rn 累加器与寄存器相“或”8 ORL A,direct 累加器与直接地址单元相“或”9 ORL A,@Ri 累加器与间接RAM 单元单元相“或”10 ORL A,#data 累加器与立即数相“或”11 ORL direct,A 直接地址单元与累加器相“或”12 ORL direct,#data 直接地址单元与立即数相“或”13 XRL A,Rn 累加器与寄存器相“异或”14 XRL A,direct 累加器与直接地址单元相“异或”15 XRL A,@Ri 累加器与间接RAM 单元单元相“异或”16 XRL A,#data 累加器与立即数相“异或”17 XRL direct,A 直接地址单元与累加器相“异或”18 XRL direct,#data 直接地址单元与立即数相“异或”19 CLR A 累加器清“0”20 CPL A 累加器求反21 RL A 累加器循环左移22 RLC A 累加器带进位位循环左移23 RR A 累加器循环右移24 RRC A 累加器带进位位循环右移25 SWAP A 累加器半字节交换控制转移类指令:1 ACALL addr11 绝对(短)调用子程序2 LCALL addr16 长调用子程序3 RET 子程序返回4 RETI 中断返回5 AJMP addr11 绝对转移6 LJMP addr16 长转移7 SJMP rel 短转移8 JMP @A+DPTR 变址寻址转移相对于DPTR 的间接转移9 JZ rel A为零转移10 JNZ rel ;A不等于0转移11 CJNE A,direct,rel 累加器与直接地址单元比较,不相等则转移12 CJNE A,#data,rel 累加器与立即数比较,不相等则转移13 CJNE Rn,#data,rel 寄存器与立即数比较,不相等则转移14 CJNE @Ri,#data,rel 间接RAM 单元与立即数比较,不相等则转移15 DJNZ Rn,rel 寄存器减1,非零转移16 DJNZ direct,erl 直接地址单元减1,非零转移17 NOP 空操作PC->PC+1。

8051单片机指令

8051单片机指令

8051单片机指令8051单片机是一种经典的微控制器,使用广泛,特别适用于嵌入式系统开发。

在实际的编程过程中,了解并掌握8051单片机的指令集是非常重要的。

本文将介绍一些常用的8051单片机指令,帮助读者更好地理解和应用这些指令。

一、MOV指令MOV指令是8051单片机中最常用的指令之一,用于将数据从一个寄存器移动到另一个寄存器。

例如,MOV A, B表示将B寄存器的值移动到A寄存器中。

这个指令非常简单直观,容易理解和使用。

二、ADD指令ADD指令用于将两个数相加,并将结果存储到累加器。

例如,ADD A, B表示将A和B寄存器中的值相加,并将结果存储到A寄存器中。

这个指令非常有用,可以实现简单的数学运算。

三、SUB指令SUB指令用于计算两个数的差值,并将结果存储到累加器。

例如,SUB A, B表示将B寄存器的值从A寄存器的值中减去,并将结果存储到A寄存器中。

这个指令也非常常用,可以实现简单的减法运算。

四、MUL指令MUL指令用于计算两个数的乘积,并将结果存储到累加器和扩展寄存器中。

例如,MUL AB表示将A和B寄存器中的值相乘,并将低8位结果存储到累加器A中,将高8位结果存储到扩展寄存器B中。

这个指令非常有用,可以实现简单的乘法运算。

五、DIV指令DIV指令用于计算两个数的商和余数,并将结果存储到累加器和余数寄存器中。

例如,DIV AB表示将A和B寄存器中的值相除,并将商存储到累加器A中,余数存储到余数寄存器B中。

这个指令非常有用,可以实现简单的除法运算。

六、JMP指令JMP指令用于无条件跳转到指定的地址。

例如,JMP 2000H表示程序跳转到2000H地址处执行。

这个指令非常常用,可以实现程序的控制流跳转。

七、JC指令JC指令用于在进位标志位(Carry Flag)为1时跳转到指定的地址。

例如,JC 3000H表示当进位标志位为1时,程序跳转到3000H地址处执行。

这个指令非常有用,可以实现条件判断和分支跳转。

8051全部指令

8051全部指令
若(CY)=1,PC(PC)+3+rel,否则(CY)=0,PC(PC)+3
JNB bit,rel直接寻址位0转移
若(CY)=0,PC(PC)+3+rel,否则(CY)=1,PC(PC)+3
JBC bit ,rel直接寻址位1转移并将该位复位
若(bit)=0,则PC(PC)+3
若(bit)=1,则PC(PC)+3+rel,bit0
CPL C
CY(¬CY),进位标志求反
CPL bit
Bit(¬bit)直接寻址位求反
ANL C ,bit
CY(CY)∧(bit)进位标志逻辑与直接寻址逻辑
ANL C,/bit
CY(CY)∧(¬bit)进位标志逻辑与直接寻址地址反码
ORL C,bit
CY(CY)∨(bit)进位标志逻辑或直接寻址位
ORL C,/bit
A(A)⊕(direct)
XRL direct, A
Direct(direct)⊕(A)
XRL direct,#data
Direct(direct)⊕#data
CLR A
A00H
CPL A
A(¬A)
RL A
累加器内容循环左移一位
RLC A
累加器内容连同进位标志循环左移一位
RR A
累加器内容循环右移一位
XCH A,direct
内部RAM或SFR与累加器互换
XCH A,@Ri
内部RAM和A互换
XCHD A,@Ri
内部RAM低4位与累加器低4位互换
SWAP A
A高4位与低4位互换
PUSH direct
SPSP+1,(SP)(direct)

8051单片机常用指令

8051单片机常用指令

8051单⽚机常⽤指令3.2.1数据传送与交换类指令共有28条指令,包括以A,Rn,DPTR,直接地址单元,间接地址单元为⽬的的操作数的指令;访问外部RAM的指令;读程序存储器的指9.堆栈操作3.2 分类指令在介绍各条分类指令之前,将指令中的操作数及注释中的符号说明如下。

Rn:当前指定的⼯作寄存器组中的Ro-R7(其中n=0,1,2,…,7)。

Ri:当前指定的⼯作寄存器组中的RO,R1(其中i=0,1)。

(Ri):Ri间址寻址指定的地址单元。

((Ri)):Ri间址寻址指定地址单元中的内容。

dir:8位直接字节地址(在⽚内RAM和SFR存储空间中)。

#data8:8位⽴即数。

#datal6:16位⽴即数。

addrl6:16位地址值。

addrll:11位地址值。

bit:位地址(在位地址空间中)。

rel:相对偏移量(⼀字节补码数)。

下⾯介绍各条分类指令的主要功能和操作,详细的指令操作说明及机器码形式可见附录。

3.2.1数据传送与交换类指令共有28条指令,包括以A,Rn,DPTR,直接地址单元,间接地址单元为⽬的的操作数的指令;访问外部RAM的指令;读程序存储器的指令;数据交换指令以及准栈操作指令。

9.堆栈操作PUSH dir ;SP⼗1-6P,(dir)⼀(SP)POP dir ;((SP))⼀dir,SP-1--P ,例1 SP=07H,(35H)=55H,指令PUSH 35H执⾏后,55H送⼊08H地址单元,SP=08H。

例2 SP=13H,(13H)= 1FH,指令POP 25H执⾏后,1FH压⼊25H地址单元,SP此时为12H。

综合例把⽚内RAM中50H地址单元中的内容与40H地址单元中的内容互换。

⽅法⼀(直接地址传送法):MOV A ,50H数据传送与交换类指令是各类指令中数量最多、使⽤最频繁的⼀类指令,编程时应能⼗分熟练地灵活运⽤3.2.2算术运算类指令共有24条指令,主要包括加、减、乘、除、增量、减量和⼗进制调整等指令。

附录B 8051单片机指令表

附录B   8051单片机指令表

2
1
XCH
A,Rn
P
1
1
XCH
A, @Ri
P
1
1
半字节交换指令




影 响 标 志
字 节
周 期
把A中的低半字节同以Ri 中的内容为地址的单元中 的低半字节相交换,高四位不变。(A)0~3←→((Ri))0~3 XCHD A, @Ri P 1 1
查表指令(从ROM中读取数据)
指 MOVC A, @A+DPTR
2
ADDC A, Rn
ADDC A, direct ADDC A, @Ri ADDC A, #data
A中的内容加上Rn中的内容再加上CY位的内容结果放 在A中。(A)←(A)+(Rn)+(CY)
A中的内容加上direct单元中的内容再加上CY位 的内容结果放在A中。(A)←(A)+(direct)+(CY) A中的内容加上以Ri中的内容为地址的单元内容,再加上 CY位,结果放在A中。(A)←(A)+((Ri))+(CY) A中的内容加上常数data再加上CY位,结果放在A中。 (A)←(A)+data+(CY)
令 远程查表指令


影 响 标 志 P
字 周 节 期
1
2
MOVC A, @A+PC
近程查表指令 P 1 2
累加器A与外部数据存储器传送数据 影 响 标 志 字 周 节 期




MOVX
A,@Ri
以Ri中的内容为地址的外部数据存储器单元中的内 容 送累加器A中。(A)←((Ri)) 以DPTR中的内容为地址的外部数据存储器单元中的 内容送累加器A中。(A)←((DPTR))

8051指令集

8051指令集

8051指令集序号指令格式功能简述字节数周期一、数据传送类指令1MOV A,Rn寄存器送累加器11 2MOV Rn,A累加器送寄存器11 3MOV A,@Ri内部RAM单元送累加器11 4MOV @Ri,A累加器送内部RAM单元11 5MOV A,#data立即数送累加器21 6MOV A,direct直接寻址单元送累加器21 7MOV direct,A累加器送直接寻址单元21 8MOV Rn,#data立即数送寄存器21 9MOV direct,#data立即数送直接寻址单元32 10MOV @Ri,#data立即数送内部RAM单元21 11MOV direct,Rn寄存器送直接寻址单元22 12MOV Rn,direct直接寻址单元送寄存器22 13MOV direct,@Ri内部RAM单元送直接寻址单元22 14MOV @Ri,direct直接寻址单元送内部RAM单元22 15MOV direct2,direct1直接寻址单元送直接寻址单元32 16MOV DPTR,#data1616位立即数送数据指针32 17MOVX A,@Ri外部RAM单元送累加器(8位地址)12 18MOVX @Ri,A累加器送外部RAM单元(8位地址)12 19MOVX A,@DPTR外部RAM单元送累加器(16位地址)12 20MOVX @DPTR,A累加器送外部RAM单元(16位地址)12 21MOVC A,@A+DPTR查表数据送累加器(DPTR为基址)12 22MOVC A,@A+PC查表数据送累加器(PC为基址)12 23XCH A,Rn累加器与寄存器交换11 24XCH A,@Ri累加器与内部RAM单元交换11 25XCHD A,direct累加器与直接寻址单元交换21 26XCHD A,@Ri累加器与内部RAM单元低4位交换11 27SWAP A累加器高4位与低4位交换11 28POP direct栈顶弹出指令直接寻址单元22 29PUSH direct直接寻址单元压入栈顶22二、算术运算类指令32ADD A,Rn累加器加寄存器11 31ADD A,@Ri累加器加内部RAM单元11 32ADD A,direct累加器加直接寻址单元21 33ADD A,#data累加器加立即数21 34ADDC A,Rn累加器加寄存器和进位标志11 35ADDC A,@Ri累加器加内部RAM单元和进位标志11 36ADDC A,#data累加器加立即数和进位标志21 37ADDC A,direct累加器加直接寻址单元和进位标志21 38INC A累加器加111 39INC Rn寄存器加11140INC direct直接寻址单元加121 41INC @Ri内部RAM单元加111 42INC DPTR数据指针加112 43DA A十进制调整11 44SUBB A,Rn累加器减寄存器和进位标志11 45SUBB A,@Ri累加器减内部RAM单元和进位标志11 46SUBB A,#data累加器减立即数和进位标志21 47SUBB A,direct累加器减直接寻址单元和进位标志21 48DEC A累加器减111 49DEC Rn寄存器减111 50DEC @Ri内部RAM单元减111 51DEC direct直接寻址单元减121 52MUL AB累加器乘寄存器B14 53DIV AB累加器除以寄存器B14三、逻辑运算类指令54ANL A,Rn累加器与寄存器11 55ANL A,@Ri累加器与内部RAM单元11 56ANL A,#data累加器与立即数21 57ANL A,direct累加器与直接寻址单元21 58ANL direct,A直接寻址单元与累加器21 59ANL direct,#data直接寻址单元与立即数31 60ORL A,Rn累加器或寄存器11 61ORL A,@Ri累加器或内部RAM单元11 62ORL A,#data累加器或立即数21 63ORL A,direct累加器或直接寻址单元21 64ORL direct,A直接寻址单元或累加器21 65ORL direct,#data直接寻址单元或立即数31 66XRL A,Rn累加器异或寄存器11 67XRL A,@Ri累加器异或内部RAM单元11 68XRL A,#data累加器异或立即数21 69XRL A,direct累加器异或直接寻址单元21 70XRL direct,A直接寻址单元异或累加器21 71XRL direct,#data直接寻址单元异或立即数32 72RL A累加器左循环移位11 73RLC A累加器连进位标志左循环移位11 74RR A累加器右循环移位11 75RRC A累加器连进位标志右循环移位11 76CPL A累加器取反11 77CLR A累加器清零11四、控制转移类指令类78ACCALL addr112KB范围内绝对调用22 79AJMP addr112KB范围内绝对转移22 80LCALL addr162KB范围内长调用32 81LJMP addr162KB范围内长转移3282SJMP rel相对短转移22 83JMP @A+DPTR相对长转移12 84RET子程序返回12 85RET1中断返回12 86JZ rel累加器为零转移22 87JNZ rel累加器非零转移22 88CJNE A,#data,rel累加器与立即数不等转移32 89CJNE A,direct,rel累加器与直接寻址单元不等转移32 90CJNE Rn,#data,rel寄存器与立即数不等转移32 91CJNE @Ri,#data,rel RAM单元与立即数不等转移32 92DJNZ Rn,rel寄存器减1不为零转移22 93DJNZ direct,rel直接寻址单元减1不为零转移32 94NOP空操作11五、布尔操作类指令95MOV C,bit直接寻址位送C21 96MOV bit,C C送直接寻址位21 97CLR C C清零11 98CLR bit直接寻址位清零21 99CPL C C取反11 100CPL bit直接寻址位取反21 101SETB C C置位11 102SETB bit直接寻址位置位21 103ANL C,bit C逻辑与直接寻址位22 104ANL C,/bit C逻辑与直接寻址位的反22 105ORL C,bit C逻辑或直接寻址位22 106ORL C,/bit C逻辑或直接寻址位的反22 107JC rel C为1转移22 108JNC rel C为零转移22 109JB bit,rel直接寻址位为1转移32 110JNB bit,rel直接寻址为0转移32 111JBC bit,rel直接寻址位为1转移并清该位32。

8051单片机的指令列表

8051单片机的指令列表
1
1
ADDC A,#data
累加器加立即数和进位标志
2
1
ADDC A,direct
累加器加直接寻址单元和进位标志
2
1
INC A
累加器加1
1
1
INC Rn
寄存器加1
1
1
INC direct
直接寻址单元加1
2
1
INC @Ri
内部RAM单元加1
1
1
INC DPTR
数据指针加1
1
2
DA A
十进制调整
1
1
SUBB A,Rn
ORL C,bit
C逻辑或直接寻址位
2
2
ORL C,/bit
C逻辑或直接寻址位的反
2
2
JC rel
C为1转移
2
2
JNC rel
C为零转移
2
2
JB bit,rel
直接寻址位为1转移
3
2
JNB bit,rel
直接寻址为0转移
3
2
JBC bit,rel
直接寻址位为1转移并清该位
3
2
直接寻址单元或立即数
3
1
XRL A,Rn
累加器异或寄存器
1
1
XRL A,@Ri
累加器异或内部RAM单元
1
1
XRL A,#data
累加器异或立即数
2
1
XRL A,direct
累加器异或直接寻址单元
2
1
XRL direct,A
直接寻址单元异或累加器
2
1
XRL direct,#data
直接寻址单元异或立即数

8051指令集

8051指令集

8051指令集8051指令集序号指令格式功能简述字节数周期一、数据传送类指令1MOV A,Rn寄存器送累加器11 2MOV Rn,A累加器送寄存器11 3MOV A,@Ri内部RAM单元送累加器11 4MOV @Ri,A累加器送内部RAM单元11 5MOV A,#data立即数送累加器21 6MOV A,direct 直接寻址单元送累加器21 7MOV direct,A累加器送直接寻址单元21 8MOV Rn,#data立即数送寄存器21 9MOV direct,#data立即数送直接寻址单元32 10MOV @Ri,#data立即数送内部RAM单元21 11MOV direct,Rn寄存器送直接寻址单元22 12MOV Rn,direct直接寻址单元送寄存器22 13MOV direct,@Ri内部RAM单元送直接寻址单元22 14MOV @Ri,direct直接寻址单元送内部RAM单元22 15MOV direct2,direct1直接寻址单元送直接寻址单元32 16MOV DPTR,#data1616位立即数送数据指针32 17MOVX A,@Ri外部RAM 单元送累加器(8位地址)12 18MOVX @Ri,A累加器送外部RAM单元(8位地址)12 19MOVX A,@DPTR外部RAM单元送累加器(16位地址)12 20MOVX @DPTR,A累加器送外部RAM单元(16位地址)12 21MOVC A,@A+DPTR查表数据送累加器(DPTR为基址)12 22MOVC A,@A+PC查表数据送累加器(PC为基址)12 23XCH A,Rn累加器与寄存器交换11 24XCH A,@Ri累加器与内部RAM单元交换11 25XCHD A,direct累加器与直接寻址单元交换21 26XCHD A,@Ri累加器与内部RAM单元低4位交换11 27SWAP A累加器高4位与低4位交换11 28POP direct栈顶弹出指令直接寻址单元22 29PUSH direct直接寻址单元压入栈顶22二、算术运算类指令32ADD A,Rn累加器加寄存器11 31ADD A,@Ri累加器加内部RAM单元11 32ADD A,direct累加器加直接寻址单元21 33ADD A,#data累加器加立即数21 34ADDC A,Rn累加器加寄存器和进位标志11 35ADDC A,@Ri累加器加内部RAM单元和进位标志11 36ADDC A,#data累加器加立即数和进位标志21 37ADDC A,direct累加器加直接寻址单元和进位标志21 38INC A累加器加111 39INC Rn寄存器加11140INC direct直接寻址单元加121 41INC @Ri内部RAM单元加111 42INC DPTR数据指针加112 43DA A十进制调整11 44SUBB A,Rn累加器减寄存器和进位标志11 45SUBB A,@Ri累加器减内部RAM单元和进位标志11 46SUBB A,#data累加器减立即数和进位标志21 47SUBB A,direct累加器减直接寻址单元和进位标志21 48DEC A累加器减111 49DEC Rn寄存器减111 50DEC @Ri内部RAM单元减111 51DEC direct直接寻址单元减121 52MUL AB累加器乘寄存器B14 53DIV AB累加器除以寄存器B14三、逻辑运算类指令54ANL A,Rn累加器与寄存器11 55ANL A,@Ri累加器与内部RAM单元11 56ANL A,#data累加器与立即数21 57ANL A,direct累加器与直接寻址单元21 58ANL direct,A直接寻址单元与累加器21 59ANL direct,#data直接寻址单元与立即数31 60ORL A,Rn累加器或寄存器11 61ORL A,@Ri累加器或内部RAM单元11 62ORL A,#data累加器或立即数21 63ORL A,direct累加器或直接寻址单元21 64ORL direct,A直接寻址单元或累加器21 65ORL direct,#data直接寻址单元或立即数31 66XRL A,Rn累加器异或寄存器11 67XRL A,@Ri累加器异或内部RAM单元11 68XRL A,#data累加器异或立即数21 69XRL A,direct累加器异或直接寻址单元21 70XRL direct,A直接寻址单元异或累加器21 71XRL direct,#data直接寻址单元异或立即数32 72RL A累加器左循环移位11 73RLC A累加器连进位标志左循环移位11 74RR A累加器右循环移位11 75RRC A累加器连进位标志右循环移位11 76CPL A累加器取反11 77CLR A累加器清零11四、控制转移类指令类78ACCALL addr112KB范围内绝对调用22 79AJMP addr112KB 范围内绝对转移22 80LCALL addr162KB范围内长调用32 81LJMP addr162KB范围内长转移3282SJMP rel相对短转移22 83JMP @A+DPTR相对长转移12 84RET子程序返回12 85RET1中断返回12 86JZ rel累加器为零转移22 87JNZ rel累加器非零转移22 88CJNE A,#data,rel累加器与立即数不等转移32 89CJNE A,direct,rel累加器与直接寻址单元不等转移32 90CJNE Rn,#data,rel寄存器与立即数不等转移32 91CJNE @Ri,#data,rel RAM单元与立即数不等转移32 92DJNZ Rn,rel寄存器减1不为零转移22 93DJNZ direct,rel直接寻址单元减1不为零转移32 94NOP空操作11五、布尔操作类指令95MOV C,bit直接寻址位送C21 96MOV bit,C C送直接寻址位21 97CLR C C清零11 98CLR bit直接寻址位清零21 99CPL C C取反11 100CPL bit直接寻址位取反21 101SETB C C置位11 102SETB bit 直接寻址位置位21 103ANL C,bit C逻辑与直接寻址位22 104ANL C,/bit C逻辑与直接寻址位的反22 105ORL C,bit C逻辑或直接寻址位22 106ORL C,/bit C逻辑或直接寻址位的反22 107JC rel C为1转移22 108JNC rel C为零转移22 109JB bit,rel直接寻址位为1转移32 110JNB bit,rel直接寻址为0转移32 111JBC bit,rel直接寻址位为1转移并清该位32。

8051单片机指令表

8051单片机指令表

8051单片机指令表助记符指令说明字节数周期数(数据传递类指令)MOV A,Rn寄存器传送到累加器11 MOV A,direct直接地址传送到累加器21 MOV A,@Ri累加器传送到外部RAM(8地址)11 MOV A,#data立即数传送到累加器21 MOV Rn,A累加器传送到寄存器11 MOV Rn,direct直接地址传送到寄存器22 MOV Rn,#data累加器传送到直接地址21 MOV direct,Rn寄存器传送到直接地址21 MOV direct,direct直接地址传送到直接地址32 MOV direct,A累加器传送到直接地址21 MOV direct,@Ri间接RAM传送到直接地址22 MOV direct,#data立即数传送到直接地址32 MOV@Ri,A直接地址传送到直接地址12 MOV@Ri,direct直接地址传送到间接RAM21 MOV@Ri,#data立即数传送到间接RAM22 MOV DPTR,#data1616位常数加载到数据指针31 MOVC A,@A+DPTR代码字节传送到累加器12 MOVC A,@A+PC代码字节传送到累加器12 MOVX A,@Ri外部RAM(8地址)传送到累加器12 MOVX A,@DPTR外部RAM(16地址)传送到累加器12 MOVX@Ri,A累加器传送到外部RAM(8地址)12 MOVX@DPTR,A累加器传送到外部RAM(16地址)12 PUSH direct直接地址压入堆栈22POP direct直接地址弹出堆栈22XCH A,Rn寄存器和累加器交换11XCH A,direct直接地址和累加器交换21XCH A,@Ri间接RAM和累加器交换11XCHD A,@Ri间接RAM和累加器交换低4位字节11(算术运算类指令)INC A累加器加111 INC Rn寄存器加111 INC direct直接地址加121 INC@Ri间接RAM加111 INC DPTR数据指针加112 DEC A 累加器减111 DEC Rn寄存器减111 DEC direct直接地址减122 DEC@Ri间接RAM减111 MUL AB累加器和B寄存器相乘14 DIVAB累加器除以B寄存器14 DA A累加器十进制调整11 ADD A,Rn寄存器与累加器求和11 ADD A,direct直接地址与累加器求和21 ADD A,@Ri间接RAM与累加器求和11 ADD A,#data立即数与累加器求和21 ADDC A,Rn寄存器与累加器求和(带进位)11 ADDC A,direct直接地址与累加器求和(带进位)21 ADDC A,@Ri间接RAM与累加器求和(带进位)11 ADDC A,#data立即数与累加器求和(带进位)21 SUBB A,Rn累加器减去寄存器(带借位)11 SUBB A,direct累加器减去直接地址(带借位)21 SUBB A,@Ri累加器减去间接RAM(带借位)11 SUBB A,#data累加器减去立即数(带借位)21(逻辑运算类指令)ANL A,Rn寄存器“与”到累加器11 ANL A,direct直接地址“与”到累加器21ANL A,@Ri间接RAM“与”到累加器11 ANL A,#data立即数“与”到累加器21 ANL direct,A累加器“与”到直接地址21 ANL direct,#data立即数“与”到直接地址32 ORL A,Rn寄存器“或”到累加器12 ORL A,direct直接地址“或”到累加器21 ORL A,@Ri间接RAM“或”到累加器11 ORL A,#data立即数“或”到累加器21 ORL direct,A累加器“或”到直接地址21 ORL direct,#data立即数“或”到直接地址31 XRL A,Rn寄存器“异或”到累加器12 XRL A,direct直接地址“异或”到累加器21 XRL A,@Ri间接RAM“异或”到累加器11 XRL A,#data立即数“异或”到累加器21 XRL direct,A 累加器“异或”到直接地址21 XRL direct,#data立即数“异或”到直接地址31 CLR A累加器清零12 CPL A累加器求反11 RL A累加器循环左移11 RLC A带进位累加器循环左移11 RR A累加器循环右移11 RRC A带进位累加器循环右移11 SWAP A累加器高、低4位交换11 (控制转移类指令)JMP@A+DPTR相对DPTR的无条件间接转移12 JZ rel累加器为0则转移22 JNZ rel累加器为1则转移22 CJNE A,direct,rel比较直接地址和累加器,不相等转移32 CJNE A,#data,rel比较立即数和累加器,不相等转移32CJNE Rn,#data,rel比较寄存器和立即数,不相等转移22 CJNE@Ri,#data,rel比较立即数和间接RAM,不相等转移32 DJNZ Rn,rel寄存器减1,不为0则转移32 DJNZ direct,rel直接地址减1,不为0则转移32 NOP空操作,用于短暂延时11 ACALL add11绝对调用子程序22 LCALL add16长调用子程序32 RET从子程序返回12 RETI 从中断服务子程序返回12 AJMP add11无条件绝对转移22 LJMP add16无条件长转移32 SJMP rel无条件相对转移22(布尔指令)CLR C清进位位11 CLR bit清直接寻址位21 SETB C置位进位位11 SETB bit置位直接寻址位21 CPL C取反进位位11 CPL bit取反直接寻址位21 ANL C,bit直接寻址位“与”到进位位22 ANL C,/bit直接寻址位的反码“与”到进位位22 ORL C,bit直接寻址位“或”到进位位22 ORL C,/bit直接寻址位的反码“或”到进位位22 MOV C,bit 直接寻址位传送到进位位21 MOV bit,C进位位位传送到直接寻址22 JC rel如果进位位为1则转移22 JNC rel如果进位位为0则转移22 JB bit,rel如果直接寻址位为1则转移32 JNB bit,rel如果直接寻址位为0则转移32JBC bit,rel直接寻址位为1则转移并清除该位22(伪指令)ORG指明程序的开始位置DB定义数据表DW定义16位的地址表EQU给一个表达式或一个字符串起名DATA给一个8位的内部RAM起名XDATA给一个8位的外部RAM起名BIT给一个可位寻址的位单元起名END指出源程序到此为止(指令中的符号标识)Rn工作寄存器R0-R7Ri工作寄存器R0和R1@Ri间接寻址的8位RAM单元地址(00H-FFH)#data88位常数#data1616位常数addr1616位目标地址,能转移或调用到64KROM的任何地方addr1111位目标地址,在下条指令的2K范围内转移或调用Rel8位偏移量,用于SJMP和所有条件转移指令,范围-128~+127 Bit片内RAM中的可寻址位和SFR的可寻址位Direct直接地址,范围片内RAM单元(00H-7FH)和80H-FFH $指本条指令的起始位置。

8051指令集

8051指令集

8051指令集寻址方式MOV A, Rn: 寄存器寻址,将寄存器Rn(n =0_7)的内容移到累加器.MOV A, @Ri: 间接寻址,将Ri(i=0,1)的值所确定的存储器的内容移到累加器. MOV A, 20H: 直接寻址.将RAM里的20H位置处的内容移到累加器. I/O接口可以被直接寻址.MOV A ,P3: 直接寻址.将P3口的内容移到累加器.直接寻址允许使用地址实际的十六进制数或者列出的SFR缩写进行寻址.MOV A, #60H:立即数寻址.将数60H移到累加器中.程序转移指令JMP label (无条件转移): 程序控制转移到label 位置.根据它所指的目标地址.ASM51汇编器将JMP指令转换成绝对跳转指令AJMP, 短跳转指令SJMP或长跳转指令LJMP.JZ label(累加器为0则跳转): 程序转移到label位置JNZ label (累加器不为0则跳转) : 假如累加器不为0,程序转移到label位置.JB bit ,label(置位则跳转):假如指令的位bit为1,程序转移到label位置.JNB bit, label (不置位则跳转):假如指定的位bit为0,程序转移到label位置DJNZ Rn, label(寄存器减1,不为0则跳转): 寄存器Rn(n=0~7)减1后不为0, 程序转移到label位置CJNE Rn, #data , label(比较寄存器和立即数data,不相等则转移):假如寄存器Rn不等于立即数data, 程序转移到label位置.累加器A也可以用于和立即数比较..CALL label(子程序调用):程序控制转移到label位置.返回地址存储在堆栈内.根据label 所指定的目标地址,ASM51汇编器将CALL指令转换成绝对调用ACALL或长调用LCALL. RET(返回):程序返回到CALL指令下一条指令处.逻辑和位操作ANL A, Rn(寄存器和累加器与):寄存器和累加器按位与,结果存储在累加器.ANL A,#data(立即数data和累加器与):立即数data和累加器按位与,结果存储在累加器.ORL A, Rn(寄存器和累加器或)ORL A,#data(立即数data和累加器或)XRL A, Rn(寄存器和累加器异或)XRL A,#data(立即数data和累加器异或)最常用的位操作指令如下:CLR bit (清除位):清除地址bit 处的位的值(复位到0).SETB bit(置位):地址bit 处的位置1.CPL bit(位取反)地址bit 处的位取反.8051程序员可用的循环移位指令如下:RL A(累加器左移):将累加器的8位数都循环左移一位.RLC A(累加器带进位位循环左移):将累加器的8位数连同进位位都循环左移一位. RR A(累加器循环右移): 将累加器的8位数都循环右移一位RRC A(累加器带进位位循环右移): :将累加器的8位数连同进位位都循环右移一位算术操作ADD A, Rn (寄存器加累加器): 将寄存器Rn(n=0~7)的内容加到累加器,结果存放在累加器中.ADD A, # data (立即数加累加器): 将立即数data 加到累加器中,结果存放在累加器中. SUBB A ,Rn(累加器减去寄存器Rn和借位位): 从累加器中减去寄存器Rn和借位位(进位位),结果存放在累加器中.SUBB A, #data (累加器减去立即数data 和借位位): 从累加器中减去立即数和借位位(进位位),结果存放在累加器中.INC A(累加器加1)INC Rn(寄存器加1)DEC A(累加器减1).DEC Rn(寄存器减1)MUL AB(A乘以B)DIV AB(A除以B)DA A(累加器的十进制调整):调整累加器A的值,将加法得出的结果调整为2个BCD码.。

单片机8051指令

单片机8051指令

8051指令系统汇总表启动及中断入口地址0000HRESETINT0003H0000BHT/C0INT0013H1001BHT/C10023H串口1002BH仅8032(8052)有0033HPF1(电源故障)__DS80C320003BH串口2...0043HINT2INT004BH30053HINT4INT005BH50063HWDTI__看门狗进位辅助进位用户寄存器选择符号运算出错标志奇偶标志标志 0 0 0 1=奇0 1 1 0=偶1 0 21 1 3TMOD89HPCON87H位地址(符号地址)字节地址SFR寻址MSB位地址LSBSRF寄存器IE0及IE1在中断返回前应清除(CLR IE0(IE1))。

RAM 访问时间选择 WD1 WD0 复位时间0 0 0 2机器周期0 0 217+5120 0 1 3机器周期(缺省) 0 1 220+5120 1 0 4机器周期 1 0 223+5120 1 1 5机器周期 1 1 226+512 1 0 0 6机器周期 1 0 1 7机器周期 1 1 0 8机器周期 1 1 1 9机器周期扩展中断使能DOG INT5 INT4 INT3 INT2WDIF—看门狗中断标志WDRF—看门狗计数器复位标志EWT-—使能看门狗计数器复位RWT---复位看门狗计数器指令表中的定义如下:Ri=R0及R1;Rn=R0--R7;direct=内部RAM;data=立即数(单字节或双字节)。

8051单片机汇编指令集

8051单片机汇编指令集

将直接地址的内容加1 将间接地址的内容加1 数据指针寄存器值加1
当DPTR的低字节(DPL)从FFH溢出至00H时,会使高字节(DPH)加1,不影响任何标志位 将累加器的值减1 将寄存器的值减1 将直接地址的内容减1 将间接地址的内容减1 将累加器的值与B寄存器的值相乘,乘积的低位字节存回累加器,高位字节 存回B寄存器
指令 算数运算指令 1.ADD A,Rn 2.ADD A,direct 3.ADD A,@Ri 4.ADD A,#data 5.ADDC A,Rn 6.ADDC A,direct 7.ADDC A,@Ri 8.ADDC A,#data 9.SUBB A,Rn 10.SUBB A,direct 11.SUBB A,@Ri 12.SUBB A,0data 13.INC A 14.INC Rn
2 2 3 2 1 2 1 2 2 2 3 2 2 2 1 2 2 2 2 2 3 2 3 2
107.CJNE @Rn,#data,rel 3 2 108.CJNE @Ri,#data,rel 3 2 109.DJNZ Rn,rel 110.DJNZ direct,rel 111.NOP 2 2 3 2 1 1
A) 7-4←(A)7-4+6 将累加器的值与寄存器的值做AND的逻辑判断,结果存回累加器 将累加器的值与直接地址的内容做AND的逻辑判断,结果存回累加器 将累加器的值与间接地址的内容做AND的逻辑判断,结果存回累加器 将累加器的值与常数做AND的逻辑判断,结果存回累加器 将直接地址的内容与累加器的值做AND的逻辑判断,结果存回该直接地址 将直接地址的内容与常数值做AND的逻辑判断,结果存回该直接地址 将累加器的值与寄存器的值做OR的逻辑判断,结果存回累加器 将累加器的值与直接地址的内容做OR的逻辑判断,结果存回累加器 将累加器的值与间接地址的内容做OR的逻辑判断,结果存回累加器 将累加器的值与常数做OR的逻辑判断,结果存回累加器 将直接地址的内容与累加器的值做OR的逻辑判断,结果存回该直接地址 将直接地址的内容与常数值做OR的逻辑判断,结果存回该直接地址 将累加器的值与寄存器的值做XOR的逻辑判断,结果存回累加器

8051单片机汇编指令速查表详解

8051单片机汇编指令速查表详解

8051系列单片机汇编语言指令速查表说明:1)Ri, Rn指当前工作寄存器,i,n = 0 – 7,当前工作寄存器由程序状态字寄存器PSW的2个位RS1, RS0决定MCS-51使用汇编语言指令,它共有44个操作码助记符,33种功能,其操作数有#data、direct、Rn、@Ri等。

这里介绍指令助记符及其相关符号的记忆方法。

一、助记符号的记忆方法1、表格列举法把44个指令助记符按功能分为五类,每类列表记忆。

此处从略,请读者自己总结。

2、英文还原法单片机的操作码助记符是该指令功能的英文缩写,将缩写还原成英语原文,再对照汉语有助于理解其助记符含义,从而加强记忆。

例如:增量INC-Incremect 减量DNC-Decrement 短转移SJMP-Short jump长转移LJMP-Long jump 比较转移CJNE-Compare jump not equality绝对转移AJMP-Absolute jump 空操作NOP-No operation交换XCH-Exchange 加法ADD-Addition乘法MUL-Multiplication 除法DIV-Division左环移RL-Rotate left 进位左环移RLC-Rotate left carry右环移RR-Rotate right 进位右环移RRC-Rotate right carry3、功能模块记忆法单片机的44个指令助记符,按所属指令功能可分为五大类,每类又可以按功能相似原则为2~3组。

这样,化整为零,各个击破,实现快速记忆。

1)数据传送组。

2)加减运算组MOV 内部数据传送ADD 加法MOVC 程序存储器传送ADDC 带进位加法MOVX 外部数据传送SUBB 带进位减法3)逻辑运算组。

4)子程序调用组。

ANL 逻辑与LCALL 长调用ORL 逻辑或ALALL 绝对调用XRL 逻辑异或RET 子程序返回二、指令的记忆方法1、指令操作数的有关符号MCS-51的寻址方式共有七种:立即数寻址、直接寻址、寄存器寻址、寄存器间址、变址寻址、相对寻址、位寻址。

8051指令表

8051指令表

1. ADD_A_RR 寄存器加到累加器(28+n)2. ADD_A_D 直接寻址字节加到累加器(25)(dir)3. ADD_A_ATRI 间址RAM 内容加到累加器(26+i)4. ADD_A_DATA 立即数加到累加器(24)(data)5. ADDC_A_RR 寄存器加到累加器(带进位)(38+n)6. ADDC_A_D 直接寻址字节加到累加器(带进位)(35)(dir)7. ADDC_A_ATRI 间址RAM 内容加到累加器(带进位)(36+i)8. ADDC_A_DATA 立即数加到累加器(带进位)(34)(data)9. SUBB_A_RR 累加器减去寄存器(带借位)(98+n)10. SUBB_A_D 累加器减去直接寻址字节(带借位)(95)(dir)11. SUBB_A_ATRI 累加器减去间址RAM (带借位)(96+i)12. SUBB_A_DATA 累加器减去立即数(带借位)(94)(data)13. INC_A 累加器加1-414. INC_RR 寄存器加1(08+n)15. INC_D 直接寻址字节加1(05)(dir)16. INC_ATRI 间址RAM 加1(06+i)17. DEC_A 累加器减1-1418. DEC_RR 寄存器减1(18+n)19. DEC_D 直接寻址字节减1(15)(dir)20. DEC_ATRI 间址RAM 减1(16+i)21. INC_DPTR 数据地址加1(A3)22. MUL_AB 累加器与寄存器B 相乘(A4)23. DIV_AB 累加器除以寄存器B -8424. DA_A 累加器十进制调整(D4)25. ANL_A_RR 寄存器与到累加器(58+n)26. ANL_A_D 直接寻址字节与到累加器(55)(dir)27. ANL_A_ATRI 间址RAM 与到累加器(56+i)28. ANL_A_DATA 立即数与到累加器(54)(data)29. ANL_D_A累加器与到直接寻址字节(52)(dir)30. ANL_D_DATA 立即数与到直接寻址字节(53)(dir)(data)31. ORL_A_RR 寄存器或到累加器(48+n)32. ORL_A_D 直接寻址字节或到累加器(45)(dir)33. ORL_A_ATRI 间址RAM 或到累加器(46+i)34. ORL_A_DATA 立即数或到累加器(44)(data)35. ORL_D_A累加器或到直接寻址字节(42)(dir)36. ORL_D_DATA 立即数或到直接寻址字节(43)(dir)(data)37. XRL_A_RR 寄存器异或到累加器(68+n)38. XRL_A_D 直接寻址字节异或到累加器(65)(dir)39. XRL_A_ATRI 间址RAM 异或到累加器(66+i)40. XRL_A_DATA 立即数异或到累加器(64)(data)41.XRL_D_A 累加器异或到直接寻址字节(62)(dir)功能说明机器码算数操作类指令逻辑操作类指令序号助记符42.XRL_D_DATA立即数异或到直接寻址字节(63)(dir)(data)43.CLR_A累加器清零(E4)44.CPL_A累加器求反(F4)45.RL_A累加器循环左移-2346.RLC_A带进位的累加器循环左移-3347.RR_A累加器循环右移-348.RRC_A带进位的累加器循环右移-1349.SWAP_A累加器内高低半字节交换(C4)数据传送类指令50.MOV_A_RR寄存器到累加器(E8+n)51.MOV_A_D直接寻址字节到累加器(E5)(dir)52.MOV_A_ATRI间址RAM到累加器(E6+i)53.MOV_A_DATA立即数到累加器(74)(data)54.MOV_RR_A累加器到寄存器(F8+n)55.MOV_RR_D直接寻址字节到寄存器(A8+n)(dir)56.MOV_RR_DATA立即数到寄存器(78+n)(data)57.MOV_D_A累加器到直接寻址字节(F5)(dir)58.MOV_D_RR寄存器到直接寻址字节(88+n)(dir)59.MOV_Dp_Ds直接寻址字节(dir_s)到直接寻址字节(dir_p)(85)(dir_s)(dir_p)60.MOV_D_ATRI间址RAM到直接寻址字节(86+i)(dir)61.MOV_D_DATA立即数到直接寻址字节(75)(dir)(data)62.MOV_ATRI_A累加器到间址RAM(F6+i)63.MOV_ATRI_D直接寻址字节到间址RAM(A6+i)(dir)64.MOV_ATRI_DATA立即数到间址RAM(76+i)(data)65.MOV_DPTR_DATA16位常数装入DPTR(90)(daH)(daL)66.MOVC_A_ATDPTR相对于DPTR的代码字节到累加器-9367.MOVC_A_ATPC相对于PC的代码字节到累加器-8368.MOVX_A_ATRI外部RAM(8位地址)到累加器(E2+i)69.MOVX_A_ATDPTR外部RAM(16位地址)到累加器(E0)70.MOVX_ATRI_A累加器到外部RAM(8位地址)(F2+i)71.MOVX_ATDPTR_A累加器到外部RAM(16位地址)(F0)72.PUSH直接寻址字节压入栈顶(C0)(dir)73.POP栈顶数据弹出到直接寻址字节(D0)(dir)74.XCH_A_RR寄存器和累加器交换(C8+n)75.XCH_A_D直接寻址字节与累加器交换(C5)(dir)76.XCH_A_ATRI间址RAM与累加器交换(C6+i)77.XCHD_A_ATRI间址RAM与累加器交换低半字节(D6+i)位操作类指令78.CLR_C清进位位(C3)79.CLR_BIT清直接寻址位(C2)(bit)80.SETB_C进位位置1(D3)81.SETB_BIT直接寻址位置1(D2)(bit)82.CPL_C进位位取反(B3)83.CPL_BIT直接寻址位取反(B2)(bit)84.ANL_C_BIT直接寻址位与到进位位(82)(bit)85.ANL_C_NBIT直接寻址位的反码与到进位位(B0)(bit)86.ORL_C_BIT直接讯职位或到进位位(72)(bit)87.ORL_C_NBIT直接寻址位的反码或到进位位(A0)(bit)88.MOV_C_BIT直接寻址位传送到进位位(A2)(bit)89.MOV_BIT_C进位位传送到直接寻址位(92)(bit)90.JC进位位为1则跳转(40)(rel)91.JNC进位位为0则跳转(50)(rel)92.JB直接寻址位为1则跳转(20)(bit)(rel)93.JNB直接寻址位为0则跳转(30)(bit)(rel)94.JBC若直接寻址位位1则跳转,并清除该位(10)(bit)(rel)控制转移类指令95.ACALL绝对调用子程序,ADDR11(addrH*20h+11h)(addrL)96.LCALL长调用子程序,ADDR16(12)(addrH)(addrL)97.RET从子程序返回-2298.RETI从中断返回-3299.AJMP绝对转移,ADDR11(addrH*20h+01h)(addrL)100.LJMP长转移,ADDR16(02)(addrH)(addrL)101.SJMP短转移,相对地址(80)(rel)102.JMP_A_DPTR相对DPTR的间接转移-73103.JZ累加器为0则转移(60)(rel)104.JNZ累加器为非0则转移(70)(rel)105.CJNE_A_D比较直接寻址字节与累加器,不相等则转移(B5)(dir)(rel) 106.CJNE_A_DATA比较立即数与累加器,不相等则转移(B4)(data)(rel) 107.CJNE_RR_DATA比较立即数与寄存器,不相等则转移(B8+n)(data)(rel) 108.CJNE_ATRI_DATA比较立即数与间址RAM,不相等则转移(B6+i)(data)(rel) 109.DJNZ_RR寄存器减1,不为0则转移(D8+n)(rel) 110.DJNZ_D直接寻址字节减1,不为0则转移(D5)(dir)(rel) 111.NOP空操作0指令编码占用字节数时钟周期数812123212122812123212122812123212122111812123212111812123212114113113111812123212122123133812123212122123133812123212122123111 111 111 111 111 111 111812 123 212 122 811 823 822 122 822 133 222 133 211 223 222 133 112 112 212 112 211 111 123 122 813 124 213 213111 122 111 122 111 123 123123 123 123 122 122 122 133 133 133822 133113 113 822133122 111 122 122 133 133 833 233 822 133 111。

标准8051单片机指令说明

标准8051单片机指令说明

标准8051单片机指令说明1.ACALL addrll指令名称:绝对调用指令指令代码:指令功能:构造目的地址,进行子程序调用。

其方法是以指令提供的11位地址(A10~A0)取代PC的低11位,PC的高5位不变。

操作内容:P C←(PC)+2SP←(PC)+1(SP)←(PC)7~0SP←(SP)+1(SP) ←(PC)15~8PC10~0←addr10~0字节数:2机械周期:2使用说明:由于指令只给出子程序地址的低11位,因此调任范围是2KB.2.ADD A,Rn指令名称:寄存器加法指令指令代码:28H~2FH指令功能:累加器内容与寄存器内容相加.操作内容:A←(A)+(Rn),n=0~7字节数:1机器周期:1影响标志位:C,AC,OV3.ADD A,direct指令名称:直接寻址加法指令指令代码:25H指令功能:累加器内容与内部RAM单元或专用寄存器内容相加操作内容:A←(A)+(direct)字节数:2机器周期:1影响标志位:C,AC,OV4.ADD A,@Ri指令名称:间接寻址加法指令指令代码:26H~27H指令功能:累加器内容与内部RAM低128单元内容相加操作内容:A←(A)+((Ri)),i=0,1字节数:1机器周期:1影响标志位:C,AC,OV5.ADDC A,#data指令名称:立即数加法指令指令代码:24H指令功能:累加器内容与立即数相加操作内容:A←(A)+data字节数:2机器周期:1影响标志位:C,AC,OV6.ADDC A,Rn指令名称:寄存器带进位加法指令指令代码:38H ~3FH指令功能:累加器内容,寄存器内容与进位位相加操作内容:A←(A)+(Rn)+(C),n=0 ~7字节数:1机器周期:1影响标志位:C,AC,OV7.ADDC A,direct指令名称:直接寻址带进位加法指令指令代码:35H指令功能:累加器内容,内部RAM低128单元或专用寄存器内容与进位位相加操作内容:A←(A)+(direct)+(C)字节数:2机器周期:1影响标志位:C,AC,OV8.ADDC A,@Ri指令名称:间接寻址带进位加法指令指令代码:36H ~37H指令功能:累加器内容,内部RAM低128单元内容及进位位相加操作内容:A←(A)+((Ri))+(C),i=0,1字节数:1机器周期:1影响标志位:C,AC,OV9.ADDC A,#data指令名称:立即数带进位加法指令指令代码:34H指令功能:累加器内容,立即数及进位位相加操作内容:A←(A)+data+(C)字节数:2机器周期:1影响标志位:C,AC,OV10.AJMP addrll指令名称:绝对转移指令指令功能:构造目的地址,实现程序转移.其方法是以指令提供的11位地址,取代PC的低11位,而PC的高5位保持不变操作内容:PC←(PC)+2PC10~0←addrll字节数:2机器周期:2使用说明:由于addrll的最小值是000H,最大值是7FFH,因此地址转移范围是2KB11.ANL A,Rn指令名称:寄存器逻辑与指令指令代码:58H~5FH指令功能:累加器内容逻辑与寄存器内容操作内容:A←(A)∧(Rn),n=0~7字节数:1机器周期:112.ANL A,direct指令名称:直接寻址逻辑与指令指令代码:55H指令功能:累加器内容逻辑与内部RAM低128单元或专用寄存器内容操作内容:A←(A) ∧(direct)字节数:2机械周期:113.ANL A,@Ri指令名称:间接寻址逻辑与指令指令代码:56H~57H指令功能:累加器内容逻辑与内部RAM低128单元内容操作内容:A←(A) ∧(Ri) i=0,1字节数:1机器周期:114.ANL A,#data指令名称:立即数逻辑与指令指令代码:54H指令功能:累加器内容逻辑与立即数操作内容:A←(A) ∧data字节数:2机器周期:115.ANL direct,A指令名称:累加器逻辑与指令指令代码:52H指令功能:内部RAM低128单元或专用寄存器内容逻辑与累加器内容操作内容: direct←(A) ∧direct字节数:2机器周期:116.ANL direct,# data指令名称:逻辑与指令指令代码:53H指令功能:内部RAM低128单元或专用寄存器内容逻辑与立即数操作内容: direct←(direct) ∧data字节数:3机械周期:217.ANL C,bit指令名称:位逻辑与指令指令代码:82H指令功能:进位标志逻辑与直接寻址位操作内容:C←(C) ∧(bit)字节数 :2机械周期:218.ANL C,/bit指令名称:位逻辑与指令指令代码:B0指令功能:进位标志与直接寻址位的反操作内容: C←(C) ∧(bit)字节数 :2机械周期:219.CJNE A, direct,rel指令名称:数值比较转移指令指令代码:B5H指令功能:累加器内容与内部RAM低128字节或专用寄存器内容比较,不等则转移操作内容:若(A)=( direct),则PC←(PC)+3,C←0若(A)>(direct),则PC←(PC)+3+rel,C←0若(A)<(direct),则PC←(PC)+3+rel,C←1字节数:3机械周期:220.CJNE A,# data,rel指令名称: 数值比较转移指令指令代码:84H指令功能:累加器内容与立即数比较,不等则转移操作内容:若(A)=data,则PC←(PC)+3,C←0若(A)>data,则PC←(PC)+3+rel,C←0若(A)<data,则PC←(PC)+3+rel,C←1字节数 :3机械周期:221.CJNE Rn,#data,rel指令名称:数值比较转移指令指令代码:B8H~BFH指令功能:寄存器内容与立即数比较操作内容:若(Rn)=data,则PC←(PC)+3,C←0若(Rn)>data,则PC←(PC)+3+rel,C←0若(Rn)<data,则PC←(PC)+3+rel,C←1字节数: 3机械周期:222. CJNE @Ri,#data,rel指令名称: 数值比较转移指令指令代码:B6H~B7H指令功能:内部RAM低128单元内容与立即数比较,不等则转移操作内容: 若(Ri)=data,则PC←(PC)+3,C←0若(Ri)>data,则PC←(PC)+3+rel,C←0若(Ri)<data,则PC←(PC)+3+rel,C←1字节数:3机械周期:223.CLR A指令名称:累加器清零指令指令代码:E4H指令功能:累加器清零操作内容:A←0字节数: 1机械周期:124.CLR C指令名称:进位标志清零指令指令代码:C3指令功能: 进位位清零操作内容:C←0字节数:1机械周期:1指令名称:直接寻址位清零指令指令代码:C2H指令功能: 直接寻址位清零操作内容: bit←0字节数: 2机械周期:126.CPL A指令名称:累加器取反指令指令代码:F4H指令功能:累加器取反操作内容:A←(A)字节数:1机械周期:127.CPL C指令名称:进位标志取反指令指令代码:B3H指令功能:进位标志位状态取反操作内容:C←(C取反)字节数: 1机械周期:128.CPL bit指令名称:直接寻址位取反指令指令代码:B2H指令功能: :直接寻址位取反操作内容: bit←(bit取反)字节数:2机械周期:129.DA A指令名称:十进制调整指令指令代码:D4H指令功能:对BCD码加法运算的结果进行有条件的修正操作内容:若(A)3~0>9∨(AC)=1,则A3~0←(A)3~0+6若(A)7~4>9∨(AC)=1,则A7~4←(A)7~4+6若(A)7~4=9∧(A)3~0>9,则A7~4←(A) 7~4+6 字节数:1机械周期:130.DEC A指令名称:累加器减1指令指令代码:14H指令功能: 累加器内容减1操作内容:A←(A)-1字节数: 1机械周期:1指令名称:寄存器减1指令指令代码:18H~1FH指令功能: 寄存器内容减1操作内容:Rn←(Rn)-1,n=0~7字节数:1机械周期:132.DEC direct指令名称:直接寻址减1指令指令代码:15H指令功能:内部RAM低128单元及专用寄存器内容减1操作内容: direct←(direct)-1字节数:2机械周期:133.DEC @Ri指令名称:间接寻址减1指令指令代码:16H~17H指令功能: :内部RAM低128单元内容减1操作内容: Ri←(Ri)-1,i=0,1字节数: 1机械周期:134.DIV AB指令名称:无符号数除法指令指令代码:84H指令功能:A的内容被B的内容除.指令执行后,商存A中,余数存于B中操作内容:A←(A)/(B)的商B←(A)/(B)的余数字节数: 1机械周期:4影响标志位:C 被清零;若B=00H,除法无法进行,并使OV=1;否则OV=0 35.DJNZ Rn,rel指令名称:寄存器减1条件转移指令指令代码:D8H~DFH指令功能:寄存器内容减1.不为0转移;为0顺序执行操作内容:Rn←(Rn)-1,n=0~7若(Rn)≠0,则PC←(PC)+2+rel若(Rn)=0,则PC←(PC)+2字节数: 2机械周期:236.DJNZ direct,rel指令名称:直接寻址单元减1条件转移指令指令代码:D5H指令功能:内部RAM低128单元内容减1,不为0转移,为0顺序执行操作内容:direct←(direct)-1若(direct)≠0,则PC←(PC)+3+rel若(direct)= 0,则PC←(PC)+3字节数:3机械周期:237.INC A指令名称:累加器加1指令指令代码:04H指令功能:累加器内容加1操作内容:A←(A)+1字节数:1机械周期:138.INC Rn指令名称:寄存器加1指令指令代码:08H~0FH指令功能:寄存器内容加1操作内容:Rn←(Rn)+1,n=0~7字节数:1机械周期:139.INC direct指令名称:直接寻址单元加1指令指令代码:05H指令功能:内部RAM低128单元或专用寄存器内容加1操作内容:direct←(direct)+1字节数:2机械周期:140.INC @Ri指令名称:间接寻址单元加1指令指令代码:06H~07H指令功能:内部RAM低128单元内容加1操作内容:(Ri) ←((Ri))+1.i=0,1字节数:1机械周期:141.INC DPTR指令名称:16位数据指针加1指令指令代码:A3H指令功能:数据指针寄存器DPTR内容加1操作内容:DPTR←(DPTR)+1字节数:1机械周期:242.JB bit rel指令名称:位条件转移指令指令代码:20H指令功能:根据指定位的状态,决定程序是否转移.若为1则转移,否则顺序执行操作内容:若(bit)=1,则PC←(PC)+3+rel若(bit) ≠1,则PC←(PC)+3字节数:3机械周期:243.JBC bit rel指令名称:位条件转移清零指令指令代码:10H指令功能:对指定位的状态进行测试.若为1则把该位清零并进行转移;否则顺序执行操作内容:若(bit)=1,则PC←(PC)+3+rel,bit←0若(bit) ≠1,则PC←(PC)+3字节数:3机械周期:244.JC rel指令名称:累加位条件转移指令指令代码:40H指令功能:根据累加位(C)的状态决定程序是否转移,若为1则转移,否则顺序顺序执行操作内容:若(C)=1,则PC←(PC)+2+rel若(C)≠1,则PC←(PC)+2字节数:2机械周期:245.JMP @A+DPTR指令名称:无条件间接转移指令指令代码:73H指令功能:A内容与DPTR内容相加作为转移目的地址,进行程序转移操作内容:PC←(A)+(DPTR)字节数:1机械周期:246.JNB bit rel指令名称:位条件转移指令指令代码:30H指令功能:根据指定位的状态,决定程序是否转移.若为0则转移,否则顺序执行操作内容:若(bit)=0,则PC←(PC)+3+rel若(bit) ≠0,则PC←(PC)+3字节数:3机械周期:247.JNC rel指令名称:累加位条件转移指令指令代码:50H指令功能:根据累加位(C)的状态决定程序是否转移,若为0则转移,否则顺序顺序执行操作内容:若(C)=0,则PC←(PC)+2+rel若(C)≠0,则PC←(PC)+2字节数:2机械周期:248.JNZ rel指令名称:判0转移指令指令代码:70H指令功能:累加位 (A)的内容不为0,则程序转移;否则顺序执行操作内容:若(A) ≠0,则PC←(PC)+2+rel若(A)=0,则PC←(PC)+2字节数:2机械周期:249.JZ rel指令名称:判0转移指令指令代码:60H指令功能:累加位 (A)的内容为0,则程序转移;否则顺序执行操作内容:若(A) = 0,则PC←(PC)+2+rel若(A) ≠0,则PC←(PC)+2字节数:2机械周期:250.LCALL addr16指令名称:长调用指令指令代码:12H指令功能:按指令给定地址进行子程序调用操作内容:PC←(PC)+3SP←(SP)+1(SP) ←(PC)7~0SP←(SP)+1(SP) ←(PC)15~8PC←addr16字节数:3机械周期:2使用说明:在职6KB的范围内调用子程序51.LJMP addr16指令名称:长转移指令指令代码:02H指令功能:使程序按指定地址进行无条件转移操作内容:PC←addr16字节数:3机械周期:252.MOV A,Rn指令名称:寄存器数据传送指令指令代码:E8H~EFH指令功能:寄存器内容送累加器操作内容:A←(Rn),n=0~7字节数:1机械周期:153.MOV A,direct指令名称:直接寻址数据传送指令指令代码:E5H指令功能:内部RAM低128(书上说的是126)单元或专用寄存器内容送累加器操作内容:A←(direct)字节数:2机械周期:154.MOV A ,@Ri指令名称:间接寻址数据传送指令指令代码:E6H~E7H指令功能:内部低128单元内容送累加器 (我认为描述不当)操作内容:A←((Ri)),i=0,1字节数:1机械周期:155.MOV A,#data指令名称:立即数据传送指令指令代码:74H指令功能:立即数送累加器操作内容:A←data字节数:2机械周期:156.MOV Rn,A指令名称:累加器数据传送指令指令代码:F8H~FFH指令功能:累加器内容送寄存器操作内容:Rn←(A)字节数:1机械周期:157.MOV Rn, direct指令名称:直接寻址数据传送指令指令代码:A8H~AFH指令功能:内部RAM低128单元或专用寄存器内容送累加器操作内容:Rn←(direct),n=0~7字节数:2机械周期:2指令名称:立即数传送指令指令代码:78H~7FH指令功能:立即数送寄存器操作内容:Rn←data,n=0~7字节数:2机械周期:159.MOV direct,A指令名称:累加器数据传送指令指令代码:F5H指令功能:累加器内容传送内部RAM低128单元或专用寄存器操作内容:direct←(A)字节数:2机械周期:160. MOV direct,Rn指令名称:寄存器数据传送指令指令代码:88H~8FH指令功能:寄存器内容传送内部RAM低128单元或专用寄存器操作内容:direct←(Rn),n=0~7字节数:2机械周期:261.MOV direct2, direct1指令名称:直接寻址数据传送指令指令代码:85H指令功能:内部RAM低128(书上是123)单元或专用寄存器之间相互传送操作内容:direct2←(direct1)字节数:3机械周期:262.MOV direct,@Ri指令名称:间接寻址数据传送指令指令代码:86H~87H指令功能:内部RAM低128单元内容传送内部RAM低128单元或专用寄存器操作内容:direct←((Ri)),i=0.1字节数:2机械周期:263.MOV direct,#data指令名称:立即数传送指令指令代码:75H指令功能:立即数送内部RAM低128单元或专用寄存器操作内容:direct←data字节数:3机械周期:2指令名称:累加器数据传送指令指令代码;F6H~F7H指令功能:累加器内容送内部RAM低128单元操作内容:(Ri) ←(A),i=0,1字节数:1机械周期:165.MOV @Ri, direct指令名称:直接寻址数据传送指令指令代码;A6H~A7H指令功能: 内部RAM低128单元或专用寄存器内容送内部RAM低128单元操作内容:字节数:2机械周期:266.MOV @Ri,#data指令名称:立即数传送指令指令代码;76H~77H指令功能:立即数送内部RAM低128单元操作内容: (Ri) ←data,i=0,1字节数:2机械周期:167.MOV C,bit指令名称:位数据传送指令指令代码;A2H指令功能:内部RAM可寻址位或专用寄存器的位状态送累加位C操作内容:C←(bit)字节数:2机械周期:168.MOV bit,C指令名称:累加位数据传送指令指令代码;92H指令功能: 累加位(书上写的是器)状态送内部RAM可寻址位或专用寄存器的指定位操作内容: bit←(C)字节数:2机械周期:269.MOV DPTR,#datal6指令名称:十六位数据传送指令指令代码;90H指令功能:十六位立即数送数据指针操作内容:DPH←data15~8DPL←data7~0字节数:3机械周期:270.MOVC A,@A+DPTR指令名称: 程序存储器读指令指令代码:93H指令功能:读程序存储器单元内容送累加器操作内容:A←(A)+(DPTR)字节数:1机械周期:2使用说明:变址寄存器A内容加基址寄存器DPTR内容时,低8位产生的进位直接加到高位,不影响进位标志71.MOVC A,@A+PC指令名称: 程序存储器读指令指令代码:83H指令功能:读程序存储器内容送累加器操作内容:A←((A)+(PC))字节数:1机械周期:2使用说明: 变址寄存器A内容加基址寄存器DPTR内容时,低8位产生的进位直接加到高位,不影响进位标志72.MOVX A,@Ri指令名称:寄存器间接寻址外部RAM读指令指令代码:E2H~E3H指令功能:读外部RAM低256单元数据送累加器字节数:1机械周期;273.MOVX A,@DPTR指令名称:数据指针间接寻址外部RAM读指令指令代码:E0H指令功能:读外部RAM单元数据送累加器操作内容:A←((DPTR))字节数:1机械周期:274.MOVX @Ri,A指令名称:寄存器间接寻址外部RAM写指令指令代码:F2H~F3H指令功能:把累加器内容写入外部RAM低256单元数据操作内容:(Ri) ←(A),i=0,1字节数:1机械周期;275.MOVX @DPTR,A指令名称:数据指针间接寻址外部RAM写指令指令代码:F0H指令功能:把累加器内容写入外部RAM单元操作内容: DPTR←(A)字节数:1 , 机械周期:276.MUL AB指令名称:乘法指令指令代码:A4H指令功能:实现8位无符号数乘法运算.两个乘数分别放在累加器A和寄存器B中.乘积为16,低8位在B中,高8位在A中操作内容:AB←(A)×(B)字节数:1机械周期:4影响标志位:进位标志复位.若乘积大于255,则OV标志置位;否则复位77.NOP指令名称: 空操作指令指令代码:00H指令功能:不执行任何操作,常用于产生一个周期的时间延迟操作内容:PC←(PC)+1字节数:1机械周期:178.ORL A,Rn指令名称:逻辑或操作指令指令代码:48H~4FH指令功能:累加器内容与寄存器内容进行逻辑或操作操作内容:A1(书上在个1) ←(A)∨(Rn),n=0~7字节数:1机械周期:179.ORL A,direct指令名称:指令代码:45H操作内容: A ←(A)∨(direct)字节数:2机械周期:180.ORL A,@Ri指令名称: 逻辑或操作指令指令代码:46H~47H指令功能:累加器内容与内部RAM低128单元内容进行逻辑或操作操作内容: A ←(A)∨((Ri)),i=0,1字节数:1机械周期:181.ORL A,#data指令名称: 逻辑或操作指令指令代码:44H指令功能:累加器内容与立即数进行逻辑或操作操作内容: A ←(A)∨data字节数:2机械周期:182.ORL direct,A指令名称:逻辑或操作指令指令代码:42H指令功能:内部RAM低128单元或专用寄存器内容与累加器内容进行逻辑或操作操作内容:direct←(direct)∨(A)字节数:2机械周期:183.ORL direct,#data指令名称:逻辑或操作指令指令代码:43H指令功能:内部RAM低128单元或专用寄存器内容与立即数进行逻辑或操作操作内容:direct←(direct)∨(data )字节数:3机械周期:284.ORL C,bit指令名称:位逻辑或操作指令指令代码:72H指令功能:累加位C的状态与内部RAM可寻址位或专用寄存器指定位进行逻辑或操作操作内容:C←(C)∨(bit )字节数:2机械周期:285.ORL C,/bit指令名称:位反逻辑或操作指令指令代码:A0H指令功能:累加位C的状态与内部RAM可寻址位或专用寄存器指定位的反进行逻辑或操作操作内容:C←(C)∨(bit 非)字节数:2机械周期:2使用说明:指定位的状态取反后进行逻辑或操作,但并不改变指定位的原来状态86.POP direct指令名称:出栈指令指令代码:D0H指令功能:堆栈栈顶单元的内容送内部RAM低128单元或专用寄存器操作内容:direct←(SP)字节数:2机械周期:287.PUSH direct指令名称:进栈指令指令代码:C0H指令功能:内部RAM低128单元或专用寄存器内容送堆栈栈顶单元操作内容:SP←(SP)+1(SP)←(direct)字节数:2;机械周期:2指令名称:子程序返回指令指令代码:22H指令功能:子程序返回操作内容:PC15~8←((SP))SP←(SP)-1PC7~0←((SP))SP←(SP)-1字节数:1机械周期:289.RETL指令名称:中断返回指令指令代码:32H指令功能:中断服务程序返回操作内容:PC15~8←((SP))SP←(SP)-1PC7~0←((SP))SP←(SP)-1字节数:1机械周期:290.RL A指令名称:循环左移指令指令代码:23H指令功能:累加器内容循环左移一位操作内容:An+1←(An);n=0~6A0←(A7)字节数:1机械周期:191.RLC A指令名称:带进位循环左移指令指令代码:33H指令功能:累加器内容连同进位标志位循环左移一位操作内容:An+1(书上写的是减1)←(An);n=0~6 A0←(C)C←(A7)字节数:1机械周期:192.RR A指令名称:循环右移指令指令代码:03H指令功能:累加器内容循环右移一位操作内容:An←(An+1);n=0~6A7←(A0)字节数:1;机械周期:1指令名称:带进位循环右移指令指令代码:13H指令功能:累加器内容连同进位标志位循环右移一位操作内容:An←(An+1);n=0~6A7←(C)C←(A0)字节数:1机械周期:194.SETB c指令名称:进位标志置位指令指令代码:D3H指令功能: 进位标志置位操作内容:C←1字节数:1机械周期:195.SETB bit指令名称:直接寻址位置位指令指令代码:D2H指令功能: 内部RAM可寻址位或专用寄存器指定位置位操作内容:bit←1字节数:2机械周期:196.SJMP rel指令名称:短转移指令指令代码:80H指令功能:按指令提供的偏移量计算偏移的目的地址,实现程序的无条件相对转移操作内容:PC←(PC)+2PC←(PC)+rel字节数:2机械周期:2使用说明:偏移量是8位二进制补码数,可实现程序的双向转移,其转移范围是(PC-126) ~(PC+129).其中PC值为本指令的地址.97.SUBB A,Rn指令名称:寄存器寻址带进位减法指令指令代码:98H~9FH指令功能:累加器内容减寄存器内容和进位标志位内容操作内容:A←(A)-(Rn)-(C),n=0~7字节数:1机械周期:1影响标志位:当够减时,进位标志位复位;不够减时,进位标志置位.当位3发生借位时,AC置位,否则AC复位.当位6及位7不同时发生借位时,OV置位,否则OV复位98.SUBB A, direct指令名称:直接寻址带进位减法指令指令代码:95H指令功能:累加器内容减内部RAM低128单元或专用寄存器和进位标志位内容操作内容: A←(A)-( direct)-(C)字节数:2机械周期:1影响标志位:同SUBB A,Rn指令(序号97)99.SUBB A,@Ri指令名称: 间接寻址带进位减法指令指令代码:96H~97H指令功能: 累加器内容减内部RAM低128单元内容及进位标志位内容操作内容: A←(A)-((Ri))-(C),i=0,1字节数:1机械周期:1影响标志位:同SUBB A,Rn指令(序号97)100.SUBB A,#data指令名称:立即数带进位减法指令指令代码:94H指令功能:累加器内容减立即数及进位标志内容操作内容: A←(A)-data -(C)字节数:2机械周期:1影响标志位:同SUBB A,Rn指令(序号97)101.SWAP A指令名称:累加器高低半字节交换指令指令代码:C4H指令功能:累加器内容的高4位与低4位交换操作内容:(A) 7~4交换(A)3~0字节数:1机械周期:1102.XCH A,Rn指令名称:寄存器寻址字节交换指令指令代码:C8H~CFH指令功能: 寄存器寻址字节交换(书上没有交换二字)操作内容:(A)交换(Rn);n=0~7字节数:1机械周期:1103.XCH A, direct指令名称:直接寻址字节交换指令指令代码:C5H指令功能:累加器内容与内部低128单元或专用寄存器内容交换操作内容:(A)交换(direct)字节数:2; 机械周期:1104.XCH A,Ri指令名称: 间接寻址字节交换指令指令代码:C6H~C7H指令功能:累加器内容与内部RAM低128单元内容交换操作内容: (A)交换((Ri));i=0,1字节数:1机械周期:1105.XCHD A,@Ri指令名称:半字节交换指令指令代码:D6H~D7H指令功能: 累加器内容低4位与内部RAM低128单元内容低4位交换操作内容: (A)3~0交换((Ri))3~0;i=0,1字节数:1机械周期:1106.XRL A,Rn指令名称:逻辑异或操作指令指令代码:68H~6FH指令功能:累加器内容与寄存器内容进行逻辑异或操作操作内容:A←(A)异或(Rn);n=0←7字节数:1机械周期:1107.XRL A, direct指令名称: 逻辑异或操作指令指令代码:65H指令功能: 累加器内容与内部RAM低128单元或专用寄存器内容进行逻辑异或操作操作内容: A←(A)异或(direct)字节数:2机械周期:1108.XRL A,@Ri指令名称: 逻辑异或指令指令代码:66H~67H指令功能: 累加器内容与内部RAM低128单元内容进行逻辑异或操作操作内容: A←(A)异或(Ri);i=0,1字节数:1机械周期:1109.XTL A,#data指令名称: 逻辑异或指令指令代码:64H指令功能: 累加器内容与立即数进行逻辑异或操作操作内容: A←(A)异或data字节数:1机械周期:1110 .XRL direct, A指令名称: 逻辑异或操作指令指令代码:62H指令功能: 累加器内容与内部RAM低128单元或专用寄存器内容进行逻辑异或操作操作内容: direct←(direct)异或(A)字节数:2机械周期:1111 .XRL direct, #data指令名称: 逻辑异或操作指令指令代码:63H指令功能:内部RAM低128单元或专用寄存器内容与立即数进行逻辑异或操作操作内容: direct←(direct)异或(data)字节数:3机械周期:2。

8051指令表

8051指令表

MOV A , RnMOV A , direct MOV A , @Ri MOV A , #data MOV Rn , AMOV Rn , direct MOV Rn , #data MOV direct , A MOV direct , RnMOV direct , direct2MOV direct , @Ri MOV direct , #data MOV @Ri , AMOV @Ri , direct MOV @Ri , #data MOV DPTR , #addr16XCH A , RnXCH A , direct XCH A , @Ri XCHD A , @Ri SWAP APUSH direct POP directMOVX A , @DPTR MOVX A , @Ri MOVX @DPTR , A MOVX @Ri , A MOVC A ,@A +PC MOVC A ,@A +DPTRADD A , RnADD A , direct ADD A , @Ri ADD A , #data ADDC A , RnADDC A , direct ADDC A , @Ri ADDC A , #data INC A INC RnINC direct INC @Ri INC DPTR DA ASUBB A , RnSUBB A , direct SUBB A , @Ri SUBB A , #data DEC A DEC RnDEC direct DEC @Ri MUL AB DIV AB AJMP addr11SJMP rel LJMP addr16JMP @A+DPTRCLR A CPL A RL A RLC A RR A RRC AANL A , RnANL A , direct ANL A , @Ri ANL A , #data ANL direct , AANL direct , #data ORL A , RnORL A , direct ORL A , @Ri ORL A , #data ORL direct , AORL direct , #data XRL A , RnXRL A , direct XRL A , @Ri XRL A , #data XRL direct , AXRL direct , #data ACALL addr11LCALL addr16RET RETIMOV C , bit MOV bit , C CLR C CLR bit SETB C SETB bit CPL C CPL bitANL C , bit ANL C , \bit ORL C , bit ORL C , \bit NOPJB bit , rel JNB bit , rel JBC bit , relDJNZ Rn , relDJNZ direct , rel CJNE A , direct , rel CJNE A , #data , rel CJNE Rn , #data , rel CJNE @Ri , #data , rel JZ rel JNZ rel JC relJNC rel位操作类条件跳转类MOV C , bit MOV bit , C CLR C CLR bit SETB C SETB bit CPL C CPL bit ANL C , bit ANL C , \bit ORL C , bit ORL C , \bitNOPJB bit , rel JNB bit , rel JBC bit , rel DJNZ Rn , rel DJNZ direct , rel CJNE A , direct , rel CJNE A , #data , rel CJNE Rn , #data , rel CJNE @Ri , #data , rel JZ rel JNZ rel JC rel JNC rel逻辑运算类CLR A CPL A RL A RLC A RR A RRC A ANL A , Rn ANL A , direct ANL A , @Ri ANL A , #data ANL direct , A ANL direct , #data ORL A , Rn ORL A , direct ORL A , @Ri ORL A , #data ORL direct , A ORL direct , #data XRL A , Rn XRL A , direct XRL A , @Ri XRL A , #data XRL direct , A XRL direct , #dataACALL addr11LCALL addr16RET RETI调用返回类数据传送类MOV A , Rn MOV A , direct MOV A , @Ri MOV A , #data MOV Rn , A MOV Rn , direct MOV Rn , #data MOV direct , A MOV direct , Rn MOV direct , direct2MOV direct , @Ri MOV direct , #data MOV @Ri , A MOV @Ri , direct MOV @Ri , #data MOV DPTR , #addr16XCH A , Rn XCH A , direct XCH A , @Ri XCHD A , @Ri SWAP A PUSH direct POP directMOVX A , @DPTR MOVX A , @Ri MOVX @DPTR , A MOVX @Ri , A MOVC A ,@A +PC MOVC A ,@A +DPTR指令寻址空间说明算术运算类ADD A , Rn ADD A , direct ADD A , @Ri ADD A , #data ADDC A , Rn ADDC A , direct ADDC A , @Ri ADDC A , #data INC A INC Rn INC direct INC @Ri INC DPTR DA ASUBB A , Rn SUBB A , direct SUBB A , @Ri SUBB A , #data DEC A DEC Rn DEC direct DEC @Ri MUL AB DIV ABAJMP addr11SJMP rel LJMP addr16JMP @A+DPTR无条件跳转类0x00。

51单片机汇编指令表

51单片机汇编指令表

以下是一些常见的51单片机(如8051系列)的汇编指令:
1. 数据传送指令:
- MOV:将一个数据或寄存器的值移动到另一个寄存器或存储器位置。

- MOVC:将数据从外部代码存储器复制到累加器或寄存器。

2. 算术运算指令:
- ADD:将累加器与另一个寄存器或存储器中的值相加。

- SUB:从累加器中减去另一个寄存器或存储器中的值。

- INC:将累加器或寄存器的值加1。

- DEC:将累加器或寄存器的值减1。

3. 逻辑运算指令:
- ANL:对累加器和另一个寄存器或存储器中的值进行逻辑与操作。

- ORL:对累加器和另一个寄存器或存储器中的值进行逻辑或操作。

- XRL:对累加器和另一个寄存器或存储器中的值进行逻辑异或操作。

- CPL:对累加器或寄存器中的值进行按位取反操作。

4. 条件分支指令:
- CJNE:比较两个值,并在不相等时跳转到指定的地址。

- DJNZ:递减累加器或寄存器,并在结果不为零时跳转到指定的地址。

5. 跳转指令:
- JMP:无条件跳转到指定的地址。

- SJMP:短跳转,跳转到相对于当前地址的指定偏移量。

- AJMP:绝对跳转,跳转到指定的地址。

- LCALL:长调用,将当前地址入栈并跳转到指定的子程序地址。

6. 位操作指令:
- SETB:将某个位设置为1。

- CLR:将某个位清零。

- JB:如果某个位为1,则跳转到指定地址。

- JNB:如果某个位为0,则跳转到指定地址。

8051单片机汇编指令速查表分解

8051单片机汇编指令速查表分解

8051系列单片机汇编语言指令速查表说明:1)Ri, Rn指当前工作寄存器,i,n = 0 – 7,当前工作寄存器由程序状态字寄存器PSW的2个位RS1, RS0决定MCS-51使用汇编语言指令,它共有44个操作码助记符,33种功能,其操作数有#data、direct、Rn、@Ri等。

这里介绍指令助记符及其相关符号的记忆方法。

一、助记符号的记忆方法1、表格列举法把44个指令助记符按功能分为五类,每类列表记忆。

此处从略,请读者自己总结。

2、英文还原法单片机的操作码助记符是该指令功能的英文缩写,将缩写还原成英语原文,再对照汉语有助于理解其助记符含义,从而加强记忆。

例如:增量INC-Incremect 减量DNC-Decrement 短转移SJMP-Short jump长转移LJMP-Long jump 比较转移CJNE-Compare jump not equality绝对转移AJMP-Absolute jump 空操作NOP-No operation交换XCH-Exchange 加法ADD-Addition乘法MUL-Multiplication 除法DIV-Division左环移RL-Rotate left 进位左环移RLC-Rotate left carry右环移RR-Rotate right 进位右环移RRC-Rotate right carry3、功能模块记忆法单片机的44个指令助记符,按所属指令功能可分为五大类,每类又可以按功能相似原则为2~3组。

这样,化整为零,各个击破,实现快速记忆。

1)数据传送组。

2)加减运算组MOV 内部数据传送ADD 加法MOVC 程序存储器传送ADDC 带进位加法MOVX 外部数据传送SUBB 带进位减法3)逻辑运算组。

4)子程序调用组。

ANL 逻辑与LCALL 长调用ORL 逻辑或ALALL 绝对调用XRL 逻辑异或RET 子程序返回二、指令的记忆方法1、指令操作数的有关符号MCS-51的寻址方式共有七种:立即数寻址、直接寻址、寄存器寻址、寄存器间址、变址寻址、相对寻址、位寻址。

8051指令总结

8051指令总结

8051指令总结指令总结共性:(1)立即数不能用作目的操作数。

(2)以累加器A为目的操作数的指令影响P标志位。

(3)Rn与Rn、Rn 与@Ri、@Ri与@Ri不能同时出现在指令的源、目的操作数中。

操作数的表现形式:内部RAM:A、Rn、@Ri、direct、#data外部RAM:@DPTR、@Ri外部ROM:@A+DPTR、@A+PC一、数据传送指令(5种/29条)对标志位的影响:除以累加器A为目的操作数的数据传送指令对P标志位有影响外,其余数据传送指令均不影响标志位。

格式:MOV , ;←(一)内部RAM数据传送指令1. 指令操作码:MOV2. 源、目的操作数均在片内RAM、SFR中。

3. 操作数A、Rn、@Ri、direct、#data之间,除Rn之间、Rn 与@Ri之间、@Ri之间不能直接传送外,其余均可直接传送。

4.源和目的操作数同为一种寻址方式只有直接地址direct 。

(二)外部RAM数据传送指令1. 指令操作码:MOVX2. 源、目的操作数均在片外RAM中,其中有一个必须是A。

3. 操作数为@DPTR、@Ri ,只能通过累加器A,采用寄存器间接寻址方式。

@Ri:片外RAM的低256个单元,@ DPTR:片外RAM的全部64KB的空间。

(三)程序存储器(ROM)数据传送指令1. 指令操作码:MOVC,主要用于查表。

2. 源操作数在片外ROM中,目的操作数在A中。

3. 操作数为@A+DPTR、@A+PC,只能读入累加器A中。

@A+DPTR :远程查表表可以放在64KB ROM的任何地址。

@A+PC:近程查表,表只能在查表指令后的256B ROM的地址空间中。

4. 偏移量A的计算方法:@A+DPTR:A=欲查数值距离表首地址的值@A+PC:A=表首地址-当前指令的PC值-1(四)数据交换指令1. 半字节交换SW AP A ;(A)3~0←→(A)7~4XCHD A , @Ri ;(A)3~0←→((Ri))3~02. 字节交换XCH A ,包括Rn、@Ri、direct 。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
直接寻址单元减1
2
1
MUL AB
累加器乘寄存器B
1
4
DIV AB
累加器除以寄存器B
1
4







ANL A,Rn
累加器与寄存器
1
1
ANL A,@Ri
累加器与内部RAM单元
1
1
ANL A,#data
累加器与立即数
2
1
ANL A,direct
累加器与直接寻址单元
2
1
ANL direct,A
直接寻址单元与累加器
8051单片机的指令列表
为了便于查阅,现把8051单片机的指令列表整理如下:
类别
指令格式
功能简述
字节数
周期







MOV A,Rn
寄存器送累加器
1
1
MOV Rn,A
累加器送寄存器
1
1
MOV A,@Ri
内部RAM单元送累加器
1
1
MOV @Ri,A
累加器送内部RAM单元
1
1
MOV A,#data
立即数送累加器
2
1
ANL direct,#data
直接寻址单元与立即数
3
1
ORL A,Rn
累加器或寄存器
1
1
ORL A,@Ri
累加器或内部RAM单元
1
1
ORL A,#data
累加器或立即数
2
1
ORL A,direct
累加器或直接寻址单元
2
1
ORL direct,A
直接rect,#data
2
2
PUSH direct
直接寻址单元压入栈顶
2
2
ADD A,Rn
累加器加寄存器
1
1
ADD A,@Ri
累加器加内部RAM单元
1
1
ADD A,direct
累加器加直接寻址单元
2
1
ADD A,#data
累加器加立即数
2
1







ADDC A,Rn
累加器加寄存器和进位标志
1
1
ADDC A,@Ri
累加器加内部RAM单元和进位标志
MOV Rn,direct
直接寻址单元送寄存器
2
2
MOV direct,@Ri
内部RAM单元送直接寻址单元
2
2
MOV @Ri,direct
直接寻址单元送内部RAM单元
2
2
MOV direct2,direct1
直接寻址单元送直接寻址单元
3
2
MOV DPTR,#data16
16位立即数送数据指针
3
2
MOVX A,@Ri
累加器减寄存器和进位标志
1
1
SUBB A,@Ri
累加器减内部RAM单元和进位标志
1
1
SUBB A,#data
累加器减立即数和进位标志
2
1
SUBB A,direct
累加器减直接寻址单元和进位标志
2
1
DEC A
累加器减1
1
1
DEC Rn
寄存器减1
1
1
DEC @Ri
内部RAM单元减1
1
1
DEC direct
直接寻址单元或立即数
3
1
XRL A,Rn
累加器异或寄存器
1
1
XRL A,@Ri
累加器异或内部RAM单元
1
1
XRL A,#data
累加器异或立即数
2
1
XRL A,direct
累加器异或直接寻址单元
2
1
XRL direct,A
直接寻址单元异或累加器
2
1
XRL direct,#data
直接寻址单元异或立即数
外部RAM单元送累加器(8位地址)
1
2
MOVX @Ri,A
累加器送外部RAM单元(8位地址)
1
2
MOVX A,@DPTR
外部RAM单元送累加器(16位地址)
1
2
MOVX @DPTR,A
累加器送外部RAM单元(16位地址)
1
2
MOVC A,@A+DPTR
查表数据送累加器(DPTR为基址)
1
2
MOVC A,@A+PC
累加器与直接寻址单元不等转移
3
2
CJNE Rn,#data,rel
寄存器与立即数不等转移
3
2
CJNE @Ri,#data,rel
RAM单元与立即数不等转移
3
2
DJNZ Rn,rel
寄存器减1不为零转移
2
2
DJNZ direct,rel
直接寻址单元减1不为零转移
3
2







NOP
空操作
1
1
MOV C,bit
直接寻址位送C
2
1
MOV bit,C
C送直接寻址位
2
1
CLR C
C清零
1
1
CLR bit
直接寻址位清零
2
1
CPL C
C取反
1
1
CPL bit
直接寻址位取反
2
1
SETB C
C置位
1
1
SETB bit
直接寻址位置位
2
1
ANL C,bit
C逻辑与直接寻址位
2
2
ANL C,/bit
C逻辑与直接寻址位的反
2
2
2KB范围内长调用
3
2
LJMP addr16
2KB范围内长转移
3
2
SJMP rel
相对短转移
2
2
JMP @A+DPTR
相对长转移
1
2
RET
子程序返回
1
2
RET1
中断返回
1
2
JZ rel
累加器为零转移
2
2
JNZ rel
累加器非零转移
2
2
CJNE A,#data,rel
累加器与立即数不等转移
3
2
CJNE A,direct,rel
3
2
RL A
累加器左循环移位
1
1
RLC A
累加器连进位标志左循环移位
1
1
RR A
累加器右循环移位
1
1
RRC A
累加器连进位标志右循环移位
1
1
CPL A
累加器取反
1
1
CLR A
累加器清零
1
1







ACCALL addr11
2KB范围内绝对调用
2
2
AJMP addr11
2KB范围内绝对转移
2
2
LCALL addr16
2
1
MOV A,direct
直接寻址单元送累加器
2
1
MOV direct,A
累加器送直接寻址单元
2
1
MOV Rn,#data
立即数送寄存器
2
1
MOV direct,#data
立即数送直接寻址单元
3
2
MOV @Ri,#data
立即数送内部RAM单元
2
1
MOV direct,Rn
寄存器送直接寻址单元
2
2
ORL C,bit
C逻辑或直接寻址位
2
2
ORL C,/bit
C逻辑或直接寻址位的反
2
2
JC rel
C为1转移
2
2
JNC rel
C为零转移
2
2
JB bit,rel
直接寻址位为1转移
3
2
JNB bit,rel
直接寻址为0转移
3
2
JBC bit,rel
直接寻址位为1转移并清该位
3
2
1
1
ADDC A,#data
累加器加立即数和进位标志
2
1
ADDC A,direct
累加器加直接寻址单元和进位标志
2
1
INC A
累加器加1
1
1
INC Rn
寄存器加1
1
1
INC direct
直接寻址单元加1
2
1
INC @Ri
内部RAM单元加1
1
1
INC DPTR
数据指针加1
1
2
DA A
十进制调整
1
1
SUBB A,Rn
查表数据送累加器(PC为基址)
1
2
XCH A,Rn
累加器与寄存器交换
1
1
XCH A,@Ri
累加器与内部RAM单元交换
1
1
XCHD A,direct
累加器与直接寻址单元交换
2
1
XCHD A,@Ri
累加器与内部RAM单元低4位交换
1
1
SWAP A
累加器高4位与低4位交换
1
1
相关文档
最新文档