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 | × | × | × | × |