本文以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位目的地址
@:間接尋址寄存器前綴
一、數據傳送類指令
1.以累加器爲目的操作數指令
MOV A,Rn
MOV A,@Ri
MOV A,direct
MOV A,#data
2.以Rn爲目的操作數的指令
MOV Rn,A
MOV Rn,direct
MOV Rn,#data
3.以直接地址爲目的操作數指令
MOV direct,A
MOV direct,Rn
MOV direct1,direct2
MOV direct,@Ri
MOV direct,#data
4.以寄存器間接地址爲目的操作數指令
MOV @Ri,A
MOV @Ri,direct
MOV @Ri,#data
5.16位傳送指令
MOV DPTR,#data16
6.堆棧操作指令
進棧:PUSH direct
出棧:POP direct
7.累加器A與外部數據存儲器傳送指令
MOVX A,@DPTR
MOVX A,@Ri
MOVX @DPTR,A
MOVX @Ri,A
8.查表指令
MOVC A,@A+PC
MOVC A,@A+DPTR
9.字節交換命令
XCH A,Rn
XCH A,direct
XCH A,@Ri
10.半字節交換指令
XCHD @Ri
二、算數操作類指令
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.增1指令
INC A
INC Rn
INC direct
INC @Ri
INC DPTR
4.十進制調整指令
DA A
5.帶借位減法
SUBB A,Rn
SUBB A,direct
SUBB A,@Ri
SUBB A,#data
6.減1指令
DEC A
DEC Rn
DEC direct
DEC @Ri
7.乘法指令
MUL AB
8.除法指令
DIV AB
三、邏輯操作類指令
1.簡單邏輯操作指令
累加器A清零:
CLR A
累加器A按位取反:
CPL A
2.左循環指令
RL A
3.帶進位左移指令
RLC A
4.右移指令
RR A
5.帶進位循環指令
RRC A
6.累加器半字節交換指令
SWAP A
7.邏輯與指令
ANL A,Rn
ANL A,direct
ANL A,#data
ANL A,@Ri
ANL direct,A
ANL direct,#data
7.邏輯或指令
ORL A,Rn
ORL A,direct
ORL A,#data
ORL A,@Ri
ORL direct,A
ORL direct,#data
7.邏輯異或指令
XRL A,Rn
XRL A,direct
XRL A,#data
XRL A,@Ri
XRL direct,A
XRL direct,#data
四、控制轉移類指令
1.無條件轉移指令
AJMP addr11
2.相對轉移指令
SJMP rel
3.長跳轉指令
LJMP addr16
4.間接跳轉指令
JMP @A+DPTR
5.條件轉移指令
若累加器爲0則轉移:
JZ rel
若累加器非0則轉移:
JNZ rel
6.比較不相等轉移指令
CJNE A,direct,rel
CJNE A,#data,rel
CJNE Rn,#data,rel
CJNE @Ri,#data,rel
7.減1不爲0轉移指令
DJNZ Rn,rel
DJNZ direct,rel
8.調用子程序指令
ACALL addr11
LCALL addr16
9.子程序返回指令
RET
10.中斷返回指令
RETI
11.空操作指令
NOP
五、位操作指令
1.數據位傳送指令
MOV C,bit
MOV bit,C
2.位變量修改指令
清0:
CLR C
CLR bit
求反:
CPL C
CPL bit
置1:
SETB C
SETB bit
3.位變量邏輯與指令
ANL C,bit
ANL C,/bit
3.位變量邏輯或指令
ORL C,bit
ORL C,/bit
4.條件轉移類指令
JC rel
JNC rel
JB bit,rel
JNB bit,rel
JBC bit,rel