运算类:
指令 | 操作数1 | 操作数2 |
ADD/ADDC——加法/带进位的加法 SUBB——带借位的减法 | A | Rn |
直接地址 | ||
@Ri | ||
#立即数 | ||
MUL/DIV——乘法/除法 | AB | |
INC/DEC——自增/自减 ***INC还可以INC DPTR——数据指针自增 | A | |
Rn | ||
@Ri | ||
直接地址 | ||
ANL/ORL/XRL——与/或/异或 | A | Rn |
直接地址 | ||
@Ri | ||
#立即数 | ||
直接地址 | A | |
#立即数 | ||
CLR/CPL——清零/取反 DA——十进制加法调整 RL/RR——循环左移/循环右移 RLC/RRC——带进位循环左移/带进位循环右移 SWAP——高低四位交换 | A | |
XCH——交换字节 | A | Rn |
直接地址 | ||
@Ri | ||
XCHD——交换后四位 | A | @Ri |
赋值类
指令 | 操作数1 | 操作数2 | |
MOV——复制字节
| A | Rn | |
直接地址 | |||
@Ri | |||
#立即数 | |||
Rn | A | ||
直接地址 | |||
#立即数 | |||
直接地址 | A | ||
Rn | |||
直接地址 | |||
@Ri | |||
#立即数 | |||
@Ri | A | ||
直接地址 | |||
#立即数 | |||
DPTR | #16位立即数 | ||
MOVC——复制程序(代码)存储器ROM字节 | A | @A+DPTR | |
@A+PC | |||
MOVX——复制外部(数据)存储器字节 | A | @Ri | |
@DPTR | |||
@Ri | A | ||
@DPTR |
位操作
指令 | 操作数1 | 操作数2 |
SETB/CLR/CPL——置位/清零取反 | C | |
位地址 | ||
ANL/ORL——与/或 | C | 位地址 |
/位地址——先取反 | ||
MOV——复制位 | C | 位地址 |
位地址 | C | |
JC/JNC——C=1跳/C=0跳 | 相对地址 | |
JB/JNB/JBC——位=1跳/位=0跳/位=1跳且清零位 | 位地址 | 相对地址 |
控制类
指令 | 操作数1 | 操作数2 |
ACALL——调用子程序(11位地址) AJMP——无条件跳(11位地址) | 11位地址 | |
LCALL——调用子程序(16位地址) LJMP——无条件跳(16位地址) | 16位地址 | |
SJMP——无条件跳(相对地址) JZ/JNZ——A=0跳/A!=0跳 | 相对地址(下一条指令地址-128~+127) | |
JMP——无条件跳到A+DPTR | @A+DPTR | |
CJNE——比较字节,不等则跳 | A,直接地址 | 相对地址 |
A,#立即数 | ||
Rn,#立即数 | ||
@Ri,#立即数 | ||
DJNZ——递减后若不为零跳 | Rn | 相对地址 |
直接地址 | ||
PUSH/POP——入栈/出栈 | 直接地址 | |
RET——从子程序返回 RETI——从中断返回 NOP——无作用 | / |
对操作数以外有影响的指令:
ADD/ADDC | D7进位,CY=1;否则CY=0 |
D3进位,AC=1;否则AC=0 | |
有符号数溢出时,OV=1;否则OV=0 | |
SUBB | D7借位,CY=1;否则CY=0 |
D3借位,AC=1;否则AC=0 | |
有符号数溢出时,OV=1;否则OV=0 | |
MUL | CY=0 |
乘积大于0xFF,OV=1;否则OV=0 | |
DIV | CY=0 |
除数是0,OV=1;否则OV=0 | |
DA | D7进位,CY=1 |
CJNE | 操作数1<操作数2,CY=1;否则CY=0 |
PUSH | SP+1 |
POP | SP-1 |
ACALL/LCALL | SP+2 |
RET/RETI | SP-2 |