51单片机指令表
数据传输类指令 | |||||||||
指令 | 功能说明 | 指令代码 | B | T | P | OV | AC | CY | |
MOV | A,Rn | 寄存器送累加器 | E8~EF | 1 | 1 | √ | × | × | × |
MOV | A,direct | 直接寻址单元送累加器 | E5 direct | 2 | 1 | √ | × | × | × |
MOV | A,@Ri | 内部RAM单元送累加器 | E6~E7 | 1 | 1 | √ | × | × | × |
MOV | A,#data | 立即数送累加器 | 74 data | 2 | 1 | √ | × | × | × |
MOV | Rn,A | 累加器送寄存器 | F8~FF | 1 | 1 | × | × | × | × |
MOV | Rn,direct | 直接寻址单元送寄存器 | A8~AF direct | 2 | 2 | × | × | × | × |
MOV | Rn,#data | 立即数送寄存器 | 78~7F data | 2 | 1 | × | × | × | × |
MOV | direct,Rn | 寄存器送直接寻址单元 | 88~8F direct | 2 | 2 | × | × | × | × |
MOV | direct2,direct1 | 直接寻址单元送直接寻址单元 | 85 direct1 direct2 | 3 | 2 | × | × | × | × |
MOV | direct,A | 累加器送直接寻址单元 | F5 direct | 2 | 1 | × | × | × | × |
MOV | direct,@Ri | 内部RAM单元送直接寻址单元 | 86~87 direct | 2 | 2 | × | × | × | × |
MOV | direct,#data | 立即数送直接寻址单元 | 75 direct data | 3 | 2 | × | × | × | × |
MOV | @Ri,A | 累加器送内部RAM | F6~F7 | 1 | 1 | × | × | × | × |
MOV | @Ri,direct | 直接寻址单元送内部RAM单元 | A6~A7 direct | 2 | 2 | × | × | × | × |
MOV | @Ri,#data | 立即数送内部RAM单元 | 76~77 data | 2 | 1 | × | × | × | × |
MOV | DPTR,#data16 | 16 位立即数送数据指针 | 90 data15~8 data7~0 | 3 | 2 | × | × | × | × |
MOVC | A,@A+DPTR | 查表数据送累加器(DPTR为基址) | 93 | 1 | 2 | √ | × | × | × |
MOVC | A,@A+PC | 查表数据送累加器(PC为基址) | 83 | 1 | 2 | √ | × | × | × |
MOVX | A,@Ri | 外部RAM单元送累加器(8位地址) | E2~E3 | 1 | 2 | √ | × | × | × |
MOVX | A,@DPTR | 外部RAM单元送累加器(16位地址) | E0 | 1 | 2 | √ | × | × | × |
MOVX | @Ri,A | 累加器送外部RAM单元(8位地址) | F2~F3 | 1 | 2 | × | × | × | × |
MOVX | @DPTR,A | 累加器送外部RAM单元(16位地址) | F0 | 1 | 2 | × | × | × | × |
PUSH | direct | 直接寻址单元压入栈顶 | C0 direct | 2 | 2 | × | × | × | × |
POP | direct | 栈顶弹至直接寻址单元 | D0 direct | 2 | 2 | × | × | × | × |
XCH | A,Rn | 累加器和寄存器交换 | C8~CF | 1 | 1 | √ | × | × | × |
XCH | A,direct | 累加器与直接寻址单元交换 | C5 direct | 2 | 1 | √ | × | × | × |
XCH | A,@Ri | 累加器与内部RAM单元交换 | C6~C7 | 1 | 1 | √ | × | × | × |
SWAP | A | 累加器高4位与低4位交换 | C4 | 1 | 1 | × | × | × | × |
XCHD | A,@Ri | 累加器与内部RAM单元低4 位交换 | D6~D7 | 1 | 1 | √ | × | × | × |
算术运算类指令 | |||||||||
指令 | 功能说明 | 指令代码 | B | T | P | OV | AC | CY | |
INC | A | 累加器加1 | 04 | 1 | 1 | √ | × | × | × |
INC | Rn | 寄存器加1 | 08~0F | 1 | 1 | × | × | × | × |
INC | direct | 直接寻址单元加1 | 05 direct | 2 | 1 | × | × | × | × |
INC | @Ri | 内部RAM单元加1 | 06~07 | 1 | 1 | × | × | × | × |
INC | DPTR | 数据指针加1 | A3 | 1 | 2 | ||||
DEC | A | 累加器减1 | 14 | 1 | 1 | √ | × | × | × |
DEC | Rn | 寄存器减1 | 18~1F | 1 | 1 | × | × | × | × |
DEC | direct | 直接寻址单元减1 | 15 direct | 2 | 1 | × | × | × | × |
DEC | @Ri | 内部RAM单元减1 | 16~17 | 1 | 1 | × | × | × | × |
MUL | A B | 累加器A乘寄存器B | A4 | 1 | 4 | √ | √ | × | 0 |
DIV | A B | 累加器A除以寄存器B | 84 | 1 | 4 | √ | √ | × | 0 |
DA | A | 十进制调整 | D4 | 1 | 1 | √ | × | √ | √ |
ADD | A,Rn | 累加器加寄存器 | 28~2F | 1 | 1 | √ | √ | √ | √ |
ADD | A,direct | 累加器加直接寻址单元 | 25 direct | 2 | 1 | √ | √ | √ | √ |
ADD | A,@Ri | 累加器加内部RAM单元 | 26~27 | 1 | 1 | √ | √ | √ | √ |
ADD | A,#data | 累加器加立即数 | 24 data | 2 | 1 | √ | √ | √ | √ |
ADDC | A,Rn | 累加器加寄存器和进位标志 | 38~3F | 1 | 1 | √ | √ | √ | √ |
ADDC | A,direct | 累加器加直接寻址单元和进位标志 | 35 direct | 2 | 1 | √ | √ | √ | √ |
ADDC | A,@Ri | 累加器加内部RAM单元和进位标志 | 36~37 | 1 | 1 | √ | √ | √ | √ |
ADDC | A,#data | 累加器加立即数和进位标志 | 34 data | 2 | 1 | √ | √ | √ | √ |
SUBB | A,Rn | 累加器减寄存器和进位标志 | 98~9F | 1 | 1 | √ | √ | √ | √ |
SUBB | A,direct | 累加器减直接寻址单元和进位标志 | 95 direct | 2 | 1 | √ | √ | √ | √ |
SUBB | A,@Ri | 累加器减内部RAM单元和进位标志 | 96~97 | 1 | 1 | √ | √ | √ | √ |
SUBB | A,#data | 累加器减立即数和进位标志 | 94 data | 2 | 1 | √ | √ | √ | √ |
逻辑运算类指令 | |||||||||
指令 | 功能说明 | 指令代码 | B | T | P | OV | AC | CY | |
ANL | A,Rn | 寄存器“与”到累加器 | 58~5F | 1 | 1 | √ | × | × | × |
ANL | A,direct | 直接地址“与”到累加器 | 55 direct | 2 | 1 | √ | × | × | × |
ANL | A,@Ri | 间接RAM“与”到累加器 | 56~57 | 1 | 1 | √ | × | × | × |
ANL | A,#data | 立即数“与”到累加器 | 54 data | 2 | 1 | √ | × | × | × |
ANL | direct,A | 累加器“与”到直接地址 | 52 direct | 2 | 1 | × | × | × | × |
ANL | direct,#data | 立即数“与”到直接地址 | 53 direct data | 3 | 2 | × | × | × | × |
ORL | A,Rn | 寄存器“或”到累加器 | 48~4F | 1 | 2 | √ | × | × | × |
ORL | A,direct | 直接地址“或”到累加器 | 45 direct | 2 | 1 | √ | × | × | × |
ORL | A,@Ri | 间接RAM“或”到累加器 | 46~47 | 1 | 1 | √ | × | × | × |
ORL | A,#data | 立即数“或”到累加器 | 44 data | 2 | 1 | √ | × | × | × |
ORL | direct,A | 累加器“或”到直接地址 | 42 direct | 2 | 1 | × | × | × | × |
ORL | direct,#data | 立即数“或”到直接地址 | 43 direct #data | 3 | 1 | × | × | × | × |
XRL | A,Rn | 寄存器“异或”到累加器 | 68~6F | 1 | 2 | √ | × | × | × |
XRL | A,direct | 直接地址“异或”到累加器 | 65 direct | 2 | 1 | √ | × | × | × |
XRL | A,@Ri | 间接RAM“异或”到累加器 | 66~67 | 1 | 1 | √ | × | × | × |
XRL | A,#data | 立即数“异或”到累加器 | 64 data | 2 | 1 | √ | × | × | × |
XRL | direct,A | 累加器“异或”到直接地址 | 62 direct | 2 | 1 | × | × | × | × |
XRL | direct,#data | 立即数“异或”到直接地址 | 63 direct #data | 3 | 1 | × | × | × | × |
CLR | A | 累加器清零 | E4 | 1 | 2 | √ | × | × | × |
CPL | A | 累加器求反 | F4 | 1 | 1 | × | × | × | × |
RL | A | 累加器循环左移 | 23 | 1 | 1 | × | × | × | × |
RLC | A | 带进位累加器循环左移 | 33 | 1 | 1 | √ | × | × | √ |
RR | A | 累加器循环右移 | 03 | 1 | 1 | × | × | × | × |
RRC | A | 带进位累加器循环右移 | 13 | 1 | 1 | √ | × | × | √ |
控制转移类指令 | |||||||||
指令 | 功能说明 | 指令代码 | B | T | P | OV | AC | CY | |
JMP | @A+DPTR | 相对长转移 | 73 | 1 | 2 | × | × | × | × |
JZ | rel | 累加器为0转移 | 60 rel | 2 | 2 | × | × | × | × |
JNZ | rel | 累加器为1转移 | 70 rel | 2 | 2 | × | × | × | × |
CJNE | A,direct,rel | 累加器与直接寻址单元不等转移 | B5 direct rel | 3 | 2 | × | × | × | × |
CJNE | A,#data,rel | 累加器与立即数不等转移 | B4 data rel | 3 | 2 | × | × | × | √ |
CJNE | Rn,#data,rel | 寄存器与立即数不等转移 | B8~BF data rel | 3 | 2 | × | × | × | √ |
CJNE | @Ri,#data,rel | 内部RAM单元与立即数不等转移 | B6~B7 data rel | 3 | 2 | × | × | × | √ |
DJNZ | Rn,rel | 寄存器减1,不为0转移 | D8~DF rel | 2 | 2 | × | × | × | √ |
DJNZ | direct,rel | 直接寻址单元减1,不为0转移 | D5 direct rel | 3 | 2 | × | × | × | × |
NOP | 空操作 | 00 | 1 | 1 | × | × | × | × | |
ACALL | addr11 | 2KB范围内绝对调用 | &0 addr(a7~a0) | 2 | 2 | × | × | × | × |
LCALL | addr16 | 64KB范围内绝对调用 | 12 addr15~8 addr7~0 | 3 | 2 | × | × | × | × |
RET | 子程序返回 | 22 | 1 | 2 | × | × | × | × | |
RETI | 中断返回 | 32 | 1 | 2 | × | × | × | × | |
AJMP | addr11 | 2KB范围内绝对转移 | &1 addr(a7~a0) | 2 | 2 | × | × | × | × |
LJMP | addr16 | 64KB范围内绝对转移 | 02 addr15~8 addr7~0 | 3 | 2 | × | × | × | × |
SJMP | rel | 相对短转移 | 80 rel | 2 | 2 | × | × | × | × |
注:&0 a10a9a8 10001 &1 a10a9a8 00001 | |||||||||
位操作指令 | |||||||||
指令 | 功能说明 | 指令代码 | B | T | P | OV | AC | CY | |
CLR | C | C内容清零 | C3 | 1 | 1 | × | × | × | √ |
CLR | bit | 直接寻址位清零 | C2 bit | 2 | 1 | × | × | × | |
SETB | C | C置位 | D3 | 1 | 1 | × | × | × | √ |
SETB | bit | 直接寻址位置位 | D2 bit | 2 | 1 | × | × | × | |
CPL | C | C内容取反 | B3 | 1 | 1 | × | × | × | √ |
CPL | bit | 直接寻址位取反 | B2 bit | 2 | 1 | × | × | × | |
ANL | C,bit | 直接寻址位与到进位位 | 82 bit | 2 | 2 | × | × | × | √ |
ANL | C,/bit | 直接寻址位的反码与到进位位 | B0 bit | 2 | 2 | × | × | × | √ |
ORL | C,bit | 直接寻址位或到进位位 | 72 bit | 2 | 2 | × | × | × | √ |
ORL | C,/bit | 直接寻址位的反码或到进位位 | A0 bit | 2 | 2 | × | × | × | √ |
MOV | C,bit | 直接寻址位送入C | A2 bit | 2 | 1 | × | × | × | √ |
MOV | bit,C | C内容送入直接寻址位 | 92 bit | 2 | 2 | × | × | × | × |
JC | rel | C为1转移 | 40 rel | 2 | 2 | × | × | × | × |
JNC | rel | C为0转移 | 50 rel | 2 | 2 | × | × | × | × |
JB | bit,rel | 直接寻址位为1转移 | 20 bit rel | 3 | 2 | × | × | × | × |
JNB | bit,rel | 直接寻址位为0转移 | 30 bit rel | 3 | 2 | × | × | × | × |
JBC | bit,rel | 直接寻址位为1转移并清除该位 | 10 bit rel | 3 | 2 | × | × | × | × |
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
二维码