本文以AT89C51为例,列举51单片机汇编语言指令集。
AT89C51单片机的汇编指令共有111条,可按功能分为5大类:
数据传送类指令28条;
算数操作类指令24条;
逻辑运算类指令25条;
控制转移类17条;
位操作类17条。
在此约定下列指令中各符号的意义:
Rn:当前寄存器区的8个工作寄存器(n=0~7)
Ri:当前寄存器区中可作间接寻址寄存器的2个寄存器(i=0 1)
Direct:直接地址
#data:包含在指令中的8位立即数
rel:相对转移指令中的偏移量,为8位带符号补码数
DPTR:数据指针,16位数据地址寄存器
bit:直接寻址位
C:进位标志位
addr11:11位目的地址
addr16:16位目的地址
@:间接寻址寄存器前缀
MOV A,Rn
MOV A,@Ri
MOV A,direct
MOV A,#data
MOV Rn,A
MOV Rn,direct
MOV Rn,#data
MOV direct,A
MOV direct,Rn
MOV direct1,direct2
MOV direct,@Ri
MOV direct,#data
MOV @Ri,A
MOV @Ri,direct
MOV @Ri,#data
MOV DPTR,#data16
进栈:PUSH direct
出栈:POP direct
MOVX A,@DPTR
MOVX A,@Ri
MOVX @DPTR,A
MOVX @Ri,A
MOVC A,@A+PC
MOVC A,@A+DPTR
XCH A,Rn
XCH A,direct
XCH A,@Ri
XCHD @Ri
ADD A,Rn
ADD A,direct
ADD A,@Ri
ADD A,#data
ADDC A,Rn
ADDC A,direct
ADDC A,@Ri
ADDC A,#data
INC A
INC Rn
INC direct
INC @Ri
INC DPTR
DA A
SUBB A,Rn
SUBB A,direct
SUBB A,@Ri
SUBB A,#data
DEC A
DEC Rn
DEC direct
DEC @Ri
MUL AB
DIV AB
累加器A清零:
CLR A
累加器A按位取反:
CPL A
RL A
RLC A
RR A
RRC A
SWAP A
ANL A,Rn
ANL A,direct
ANL A,#data
ANL A,@Ri
ANL direct,A
ANL direct,#data
ORL A,Rn
ORL A,direct
ORL A,#data
ORL A,@Ri
ORL direct,A
ORL direct,#data
XRL A,Rn
XRL A,direct
XRL A,#data
XRL A,@Ri
XRL direct,A
XRL direct,#data
AJMP addr11
SJMP rel
LJMP addr16
JMP @A+DPTR
若累加器为0则转移:
JZ rel
若累加器非0则转移:
JNZ rel
CJNE A,direct,rel
CJNE A,#data,rel
CJNE Rn,#data,rel
CJNE @Ri,#data,rel
DJNZ Rn,rel
DJNZ direct,rel
ACALL addr11
LCALL addr16
RET
RETI
NOP
MOV C,bit
MOV bit,C
清0:
CLR C
CLR bit
求反:
CPL C
CPL bit
置1:
SETB C
SETB 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