51单片机指令
数据传输指令(28条)
1、以累加器A为目的操作数
即4种寻址方式,将第二操作数所指定的工作寄存器Rn内容、直接寻址或间接寻址所得的RAM单元或特殊功能寄存器中的内容以及立即数传输到由第一操作数所指定的累加器A中。
MOV A,Rn; (Rn)→A
MOV A,direct; (direct)→A
MOV A,@Ri; (@Ri)→A
MOV A,#data; (#data)→A
2、以寄存器Rn为目的操作数
把源操作数所指定的内容送达当前工作寄存器组R0-R7中的某个寄存器
MOV Rn,A;
MOV Rn,direct;
MOV Rn,#data;
3、以直接地址为目的操作数
MOV direct,A;
MOV direct,Rn;
MOV direct,direct;
MOV direct,@Ri;
MOV direct,#data;
4、以间接地址为目的操作数
MOV @Ri,A;
MOV @Ri,direct;
MOV @Ri,#data;
5、16位数据传输指令
MOV DPTR,#data16;
6、查表指令
MOVC A,@A+DPTR;
MOVC A,@A+PC;
7、累加器A与片外RAM传输指令
MOVX A,@Ri;
MOVX A,@DPTR;
MOVX @Ri,A;
MOVX @DPTR,A;
8、栈操作指令
PUSH direct;
---
POP direct;
9、交换指令
//字节交换指令
XCH A,Rn;
XCH A,direct;
XCH A,@Ri;
//将第二操作数所指定的工作寄存器Rn(R0-R7)内容、直接寻址或间接寻址的单元内容与累加器A中的内容交换
---
//半字节交换指令
XCHD A,@Ri;
//将Ri间接寻址的单元内容与累加器A中的内容低4位互换,高四位内容不变。
算术运算指令(24条)
1、加法类指令
ADD A,Rn;
ADD A,direct;
ADD A,@Ri;
ADD A,#data;
2、带进位加法
ADDC A,Rn;
ADDC A,direct;
ADDC A,@Ri;
ADDC A,#data;
3、带借位减法
SUBB A,Rn;
SUBB A,direct;
SUBB A,@Ri;
SUBB A,#data;
4、乘法指令
MUL AB;
5、除法指令
DIV AB;
6、加1指令
INC A;
INC Rn;
INC direct;
INC @Ri;
INC DPTR;
7、减1指令
DEC A;
DEC Rn;
DEC direct;
DEC @Ri;
8、十进制调整指令
DA A;
逻辑运算及移位指令(25条)
1、简单操作指令
CLR A;
CPL A;
2、移位指令
RL A;
RR A;
RLC A;
RRC A;
3、累加器半字节交换指令
SWAP A;
4、逻辑"与"
ANL A,Rn;
ANL A,direct;
ANL A,@Ri:
ANL A,#data;
ANL direct,A;
ANL direct,#data;
5、逻辑"或"
ORL A,Rn;
ORL A,direct;
ORL A,@Ri:
ORL A,#data;
ORL direct,A;
ORL direct,#data;
6、逻辑"异或"
XRL A,Rn;
XRL A,direct;
XRL A,@Ri;
XRL A,#direct;
XRL direct,A;
XRL direct,#data;
控制指令(17条)
1、无条件转移指令
AJMP addr11
LJMP addr16
SJMP rel
2、空操作指令
NOP
3、条件转移指令
JZ rel;
JNZ rel;
---
CJNE A,direct,rel;
CJNE A,#data,rel;
CJNE Rn,#data,rel;
CJNE @Ri,#data,rel;
---
DJNZ Rn,rel;
DJNZ direct,rel;
4、调用和返回指令
ACALL addr11;
---
LACALL addr16;
---
RET;
RETI;
位操作指令或布尔操作(17条)
1、位数据传输指令
MOV C,bit;
MOV bit,C;
2、 位修整指令
CLR C;
CLR bit;
---
SETB C;
SETB bit;
---
CPL C;
CPL bit;
3、位逻辑运算指令
ANL C,bit;
ANL c,/bit;
---
ORL C,bit;
ORL C,/bit;
4、位条件转移指令
JC rel;
JNC rel;
---
JB bit,rel;
JNB bit,rel;
JBC bit,rel;