此表主要是為了方便大家查閱每條指令的作用,寫法以及字節數和周期數,建議大家保存為書簽。
助記符
|
指令說明
|
字節數
|
周期數
|
|
(數據傳遞類指令)
|
||||
MOV
|
A,Rn
|
寄存器傳送到累加器
|
1
|
1
|
MOV
|
A,direct
|
直接地址傳送到累加器
|
2
|
1
|
MOV
|
A,@Ri
|
累加器傳送到外部RAM(8 地址)
|
1
|
1
|
MOV
|
A,#data
|
立即數傳送到累加器
|
2
|
1
|
MOV
|
Rn,A
|
累加器傳送到寄存器
|
1
|
1
|
MOV
|
Rn,direct
|
直接地址傳送到寄存器
|
2
|
2
|
MOV
|
Rn,#data
|
累加器傳送到直接地址
|
2
|
1
|
MOV
|
direct,Rn
|
寄存器傳送到直接地址
|
2
|
1
|
MOV
|
direct,direct
|
直接地址傳送到直接地址
|
3
|
2
|
MOV
|
direct,A
|
累加器傳送到直接地址
|
2
|
1
|
MOV
|
direct,@Ri
|
間接RAM 傳送到直接地址
|
2
|
2
|
MOV
|
direct,#data
|
立即數傳送到直接地址
|
3
|
2
|
MOV
|
@Ri,A
|
直接地址傳送到直接地址
|
1
|
2
|
MOV
|
@Ri,direct
|
直接地址傳送到間接RAM
|
2
|
1
|
MOV
|
@Ri,#data
|
立即數傳送到間接RAM
|
2
|
2
|
MOV
|
DPTR,#data16
|
16 位常數加載到數據指針
|
3
|
1
|
MOVC
|
A,@A+DPTR
|
代碼字節傳送到累加器
|
1
|
2
|
MOVC
|
A,@A+PC
|
代碼字節傳送到累加器
|
1
|
2
|
MOVX
|
A,@Ri
|
外部RAM(8 地址)傳送到累加器
|
1
|
2
|
MOVX
|
A,@DPTR
|
外部RAM(16 地址)傳送到累加器
|
1
|
2
|
MOVX
|
@Ri,A
|
累加器傳送到外部RAM(8 地址)
|
1
|
2
|
MOVX
|
@DPTR,A
|
累加器傳送到外部RAM(16 地址)
|
1
|
2
|
PUSH
|
direct
|
直接地址壓入堆棧
|
2
|
2
|
POP
|
direct
|
直接地址彈出堆棧
|
2
|
2
|
XCH
|
A,Rn
|
寄存器和累加器交換
|
1
|
1
|
XCH
|
A, direct
|
直接地址和累加器交換
|
2
|
1
|
XCH
|
A, @Ri
|
間接RAM 和累加器交換
|
1
|
1
|
XCHD
|
A, @Ri
|
間接RAM 和累加器交換低4 位字節
|
1
|
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
|
DEC
|
A
|
累加器減1
|
1
|
1
|
DEC
|
Rn
|
寄存器減1
|
1
|
1
|
DEC
|
direct
|
直接地址減1
|
2
|
2
|
DEC
|
@Ri
|
間接RAM 減1
|
1
|
1
|
MUL
|
AB
|
累加器和B 寄存器相乘
|
1
|
4
|
DIV
|
AB
|
累加器除以B 寄存器
|
1
|
4
|
DA
|
A
|
累加器十進制調整
|
1
|
1
|
ADD
|
A,Rn
|
寄存器與累加器求和
|
1
|
1
|
ADD
|
A,direct
|
直接地址與累加器求和
|
2
|
1
|
ADD
|
A,@Ri
|
間接RAM 與累加器求和
|
1
|
1
|
ADD
|
A,#data
|
立即數與累加器求和
|
2
|
1
|
ADDC
|
A,Rn
|
寄存器與累加器求和(帶進位)
|
1
|
1
|
ADDC
|
A,direct
|
直接地址與累加器求和(帶進位)
|
2
|
1
|
ADDC
|
A,@Ri
|
間接RAM 與累加器求和(帶進位)
|
1
|
1
|
ADDC
|
A,#data
|
立即數與累加器求和(帶進位)
|
2
|
1
|
SUBB
|
A,Rn
|
累加器減去寄存器(帶借位)
|
1
|
1
|
SUBB
|
A,direct
|
累加器減去直接地址(帶借位)
|
2
|
1
|
SUBB
|
A,@Ri
|
累加器減去間接RAM(帶借位)
|
1
|
1
|
SUBB
|
A,#data
|
累加器減去立即數(帶借位)
|
2
|
1
|
(邏輯運算類指令)
|
||||
ANL
|
A,Rn
|
寄存器“與”到累加器
|
1
|
1
|
ANL
|
A,direct
|
直接地址“與”到累加器
|
2
|
1
|
ANL
|
A,@Ri
|
間接RAM“與”到累加器
|
1
|
1
|
ANL
|
A,#data
|
立即數“與”到累加器
|
2
|
1
|
ANL
|
direct,A
|
累加器“與”到直接地址
|
2
|
1
|
ANL
|
direct, #data
|
立即數“與”到直接地址
|
3
|
2
|
ORL
|
A,Rn
|
寄存器“或”到累加器
|
1
|
2
|
ORL
|
A,direct
|
直接地址“或”到累加器
|
2
|
1
|
ORL
|
A,@Ri
|
間接RAM“或”到累加器
|
1
|
1
|
ORL
|
A,#data
|
立即數“或”到累加器
|
2
|
1
|
ORL
|
direct,A
|
累加器“或”到直接地址
|
2
|
1
|
ORL
|
direct, #data
|
立即數“或”到直接地址
|
3
|
1
|
XRL
|
A,Rn
|
寄存器“異或”到累加器
|
1
|
2
|
XRL
|
A,direct
|
直接地址“異或”到累加器
|
2
|
1
|
XRL
|
A,@Ri
|
間接RAM“異或”到累加器
|
1
|
1
|
XRL
|
A,#data
|
立即數“異或”到累加器
|
2
|
1
|
XRL
|
direct,A
|
累加器“異或”到直接地址
|
2
|
1
|
XRL
|
direct, #data
|
立即數“異或”到直接地址
|
3
|
1
|
CLR
|
A
|
累加器清零
|
1
|
2
|
CPL
|
A
|
累加器求反
|
1
|
1
|
RL
|
A
|
累加器循環左移
|
1
|
1
|
RLC
|
A
|
帶進位累加器循環左移
|
1
|
1
|
RR
|
A
|
累加器循環右移
|
1
|
1
|
RRC
|
A
|
帶進位累加器循環右移
|
1
|
1
|
SWAP
|
A
|
累加器高、低4 位交換
|
1
|
1
|
(控制轉移類指令)
|
|
|||
JMP
|
@A+DPTR
|
相對DPTR 的無條件間接轉移
|
1
|
2
|
JZ
|
rel
|
累加器為0 則轉移
|
2
|
2
|
JNZ
|
rel
|
累加器為1 則轉移
|
2
|
2
|
CJNE
|
A,direct,rel
|
比較直接地址和累加器,不相等轉移
|
3
|
2
|
CJNE
|
A,#data,rel
|
比較立即數和累加器,不相等轉移
|
3
|
2
|
CJNE
|
Rn,#data,rel
|
比較寄存器和立即數,不相等轉移
|
2
|
2
|
CJNE
|
@Ri,#data,rel
|
比較立即數和間接RAM,不相等轉移
|
3
|
2
|
DJNZ
|
Rn,rel
|
寄存器減1,不為0 則轉移
|
3
|
2
|
DJNZ
|
direct,rel
|
直接地址減1,不為0 則轉移
|
3
|
2
|
NOP
|
|
空操作,用于短暫延時
|
1
|
1
|
ACALL
|
add11
|
絕對調用子程序
|
2
|
2
|
LCALL
|
add16
|
長調用子程序
|
3
|
2
|
RET
|
|
從子程序返回
|
1
|
2
|
RETI
|
|
從中斷服務子程序返回
|
1
|
2
|
AJMP
|
add11
|
無條件絕對轉移
|
2
|
2
|
LJMP
|
add16
|
無條件長轉移
|
3
|
2
|
SJMP
|
rel
|
無條件相對轉移
|
2
|
2
|
(布爾指令)
|
|
|||
CLR
|
C
|
清進位位
|
1
|
1
|
CLR
|
bit
|
清直接尋址位
|
2
|
1
|
SETB
|
C
|
置位進位位
|
1
|
1
|
SETB
|
bit
|
置位直接尋址位
|
2
|
1
|
CPL
|
C
|
取反進位位
|
1
|
1
|
CPL
|
bit
|
取反直接尋址位
|
2
|
1
|
ANL
|
C,bit
|
直接尋址位“與”到進位位
|
2
|
2
|
ANL
|
C,/bit
|
直接尋址位的反碼“與”到進位位
|
2
|
2
|
ORL
|
C,bit
|
直接尋址位“或”到進位位
|
2
|
2
|
ORL
|
C,/bit
|
直接尋址位的反碼“或”到進位位
|
2
|
2
|
MOV
|
C,bit
|
直接尋址位傳送到進位位
|
2
|
1
|
MOV
|
bit, C
|
進位位位傳送到直接尋址
|
2
|
2
|
JC
|
rel
|
如果進位位為1 則轉移
|
2
|
2
|
JNC
|
rel
|
如果進位位為0 則轉移
|
2
|
2
|
JB
|
bit,rel
|
如果直接尋址位為1 則轉移
|
3
|
2
|
JNB
|
bit,rel
|
如果直接尋址位為0 則轉移
|
3
|
2
|
JBC
|
bit,rel
|
直接尋址位為1 則轉移并清除該位
|
2
|
2
|
(偽指令)
|
||
ORG
|
指明程序的開始位置
|
|
DB
|
定義數據表
|
|
DW
|
定義16 位的地址表
|
|
EQU
|
給一個表達式或一個字符串起名
|
|
DATA
|
給一個8 位的內部RAM 起名
|
|
XDATA
|
給一個8 位的外部RAM 起名
|
|
BIT
|
給一個可位尋址的位單元起名
|
|
END
|
指出源程序到此為止
|
|
(指令中的符號標識)
|
|
Rn
|
工作寄存器R0-R7
|
Ri
|
工作寄存器R0 和R1
|
@Ri
|
間接尋址的8 位RAM 單元地址(00H-FFH)
|
#data8
|
8 位常數
|
#data16
|
16 位常數
|
addr16
|
16 位目標地址,能轉移或調用到64KROM 的任何地方
|
addr11
|
11 位目標地址,在下條指令的2K 范圍內轉移或調用
|
Rel
|
8 位偏移量,用于SJMP 和所有條件轉移指令,范圍-128~+127
|
Bit
|
片內RAM 中的可尋址位和SFR 的可尋址位
|
Direct
|
直接地址,范圍片內RAM 單元(00H-7FH)和80H-FFH
|
$
|
指本條指令的起始位置
|