本手册适用于C8051Fxxxx
(按类型列表)
指令按类型分类
ADD A,Rn(寄存器加到累加器)
ADD A,direct(直接寻址字节加到累加器)
ADD A,@Ri(间址RAM 加到累加器)
ADD A,#data(立即数加到累加器)
ADDC A,Rn(寄存器加到累加器(带进位))
ADDC A,direct(直接寻址字节加到累加器(带进位))
ADDC A,@Ri(间址RAM 加到累加器(带进位))
ADDC A,#data(立即数加到累加器(带进位))
INC A(累加器加1)
INC Rn(寄存器加1)
INC direct(直接寻址字节加1指令)
INC @Ri(间接寻址RAM字节加1指令)
INC DPTR(16位数据指针加1指令)
SUBB A,Rn(累加器减去寄存器(带借位))
SUBB A,direct(累加器减去间接寻址RAM(带借位))
SUBB A,@Ri(累加器减去间址RAM(带借位))
SUBB A,#data(累加器减去立即数(带借位))
DEC A(累加器减1指令)
DEC Rn(寄存器减1指令)
DEC direct(直接寻址字节减1指令)
DEC @Ri(间接寻址RAM字节减1指令)
MUL AB(累加器和寄存器B乘法指令)
DIV AB(累加器除以寄存器B除法指令)
DA A(累加器十进制调整指令)
ANL A,Rn(寄存器逻辑与到累加器指令)
ANL A,direct(直接寻址逻辑与到累加器指令)
ANL A,@Ri(间接寻址RAM逻辑与到累加器指令)
ANL A,#data(立即数逻辑与到累加器指令)
ANL direct,A(累加器逻辑与到直接寻址指令)
ANL direct, #data(立即数逻辑与到直接寻址指令)
ORL A,Rn(寄存器逻辑或累加器操作指令)
ORL A,direct(直接寻址逻辑或到累加器操作指令)
ORL A,@Ri(间接寻址RAM逻辑或到累加器操作指令)
ORL A,#data(立即数逻辑逻辑或到累加器操作指令)
ORL direct,A(累加器逻辑或到直接寻址字节操作指令)
ORL direct,#data(立即数逻辑或到直接寻址字节操作指令)
XRL A,Rn(寄存器逻辑异或到累加器操作指令)
XRL A,direct(直接寻址逻辑异或到累加器操作指令)
XRL A,@Ri(间接寻址RAM逻辑异或到累加器指令)
XRL A,#data(立即数逻辑异或到累加器指令)
XRL direct,A(累加器逻辑异或直接寻址字节操作指令)
XRL direct,#data(立即数逻辑异或到直接寻址字节操作指令)
CLR A(累加器清0指令)
CPL A(累加器取反指令)
RL A(循环左移指令)
RLC A(带进位循环左移指令)
RR A(循环右移指令)
RRC A(带进位循环右移指令)
SWAP A(累加器高低半字节交换指令)
MOV A,#data(立即数据传送到累加器A指令)
MOV Rn,#data(立即数据传送到寄存器指令)
MOV direct,#data(立即数传送到直接寻址字节指令)
MOV @Ri,#data(立即数传送到间接寻址RAM指令)
MOV A,direct(直接寻址数据传送到累加器A指令)
MOV direct,A(累加器数据传送到直接寻址字节指令)
MOV Rn,direct(直接寻址数据传送到寄存器指令)
MOV @Ri,direct(直接寻址数据传送到间接寻址RAM指令)
MOV direct1,direct2(直接寻址数据传送指令)
MOV A,Rn(寄存器数据传送到累加器A指令)
MOV Rn, A(累加器数据传送到寄存器指令)
MOV direct,Rn(寄存器数据传送到直接寻址字节指令)
MOV A,@Ri(间接寻址RAM数据传送到累加器A指令)
MOV @Ri,A(累加器数据传送到间接寻址RAM指令)
MOV direct, @Ri(间接寻址RAM数据传送到直接寻址字节指令)
MOV DPTR,#datal6(16位数据指针传送指令)
MOVC A,@A+DPTR(程序存储器读指令)
MOVC A,@A+PC(程序存储器读指令)
MOVX A,@Ri(寄存器间接寻址外部RAM读指令)
MOVX @Ri,A(寄存器间接寻址外部RAM写指令)
MOVX A,@DPTR(数据指针间接寻址外部RAM读指令)
MOVX @DPTR,A(数据指针间接寻址外部RAM写指令)
PUSH direct(进栈指令)
POP direct(出栈指令)
XCH A,Rn(寄存器寻址字节交换指令)
XCH A,direct(直接寻址字节交换指令)
XCH A,@Ri(间接寻址字节交换指令)
XCHD A,@Ri(半字节交换指令)
MOV C,bit(位数据传送指令)
MOV bit,C(累加位数据传送指令)
CLR C(进位标志清0指令)
CLR bit(直接寻址位清0指令)
SETB C(进位标志置位指令)
SETB bit(直接寻址位置位指令)
CPL C(进位标志取反指令)
CPL bit(直接寻址位取反指令)
ANL C,bit(位逻辑与指令)
ANL C,/bit(位取反逻辑与指令)
ORL C,bit(位逻辑或操作指令)
ORL C,/bit(位反逻辑或操作指令)
JC rel(累加位条件转移指令)
JNC rel(累加位条件转移指令)
JB bit,rel(位条件转移指令)
JNB bit,rel(位条件转移指令)
JBC bit,rel(位条件转移清0指令)
LJMP addrl6(长转移指令)
AJMP addr11(绝对转移指令)
SJMP rel(短转移指令)
JMP @A+DPTR(无条件间接转移指令)
JZ rel(判0转移指令 =0)
JNZ rel(判0转移指令 ≠0)
CJNE A,#data,rel(数值比较转移指令)
CJNE A,dircet,rel(数值比较转移指令)
CJNE Rn,#data,rel(数值比较转移指令)
CJNE @Ri,#data,rel(数值比较转移指令)
DJNZ Rn,rel(寄存器减1条件转移指令)
DJNZ direct,rel(直接寻址单元减1条件转移指令)
ACALL addr11(绝对调用指令)
LCALL addr16(长调用指令)
RET(子程序返回指令)
RETI(中断返回指令)
NOP(空操作指令)
伪指令
逻辑运算
NOT ——非运算
AND ——与运算
OR ——或运算
XOR ——异或运算
Rn —— 工作寄存器,可以是R0-R7中的一个。
@Ri —— 表示寄存器间接寻址,Ri只能是R0和R1,在Ri中存放的是RAM地址数据。
rel —— 相对于下一条指令第一个字节的8 位有符号(2 的补码)偏移量。SJMP 和所有条件转移指令使用。
direct —— 8 位内部数据存储器地址。可以是直接访问数据RAM 地址(0x00-0x7F)或一个SFR 地址(0x80-0xFF)。
#data —— 8 位立即数
#data16 —— 16 位立即数
bit —— 数据RAM 或SFR 中的直接寻址位
addr11 —— ACALL 或AJMP 使用的11 位目的地址。目的地址必须与下一条指令第一个字节处于同一个2K 字节的程序存储器页。
addr16 —— LCALL 或LJMP 使用的16 位目的地址。目的地址可以是64K 程序存储器空间内的任何位置。
@DPTR —— 表示以DPTR为数据指针的间接寻址,用于对外部64KRAM/ROM寻址。
$ —— 当前指令的地址。
有一个未使用的操作码(0xA5),它执行与NOP 指令相同的功能。