|
MCS 51 指令速查表
|
类别
|
指令格式
|
功能简述
|
字节数
|
周期
|
数
据
传
送
类
指
令
期
|
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
|
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
|
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
|
外部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
|
查表数据送累加器(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
|
POP direct
|
栈顶弹出指令直接寻址单元
|
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单元和进位标志
|
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
|
累加器减寄存器和进位标志
|
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
|
直接寻址单元减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
|
直接寻址单元与累加器
|
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
|
直接寻址单元或累加器
|
2
|
1
|
ORL direct, #data
|
直接寻址单元或立即数
|
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
|
直接寻址单元异或立即数
|
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
|
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
|
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
|
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
|
|