MCS-51單片機指令系統共111條指令,按功能分為五類:
(1)資料傳送類 28
(2)算術操作類 24
(3)邏輯運算類 25
(4)控制轉移類 17
(5)位操作類 17
(1)資料傳送類 28
MOV A,Rn ;寄存器傳送到累加器
MOV A,direct ;直接位址傳送到累加器
MOV A,@Ri ;累加器傳送到外部RAM(8 位址)
MOV A,#data ;立即數傳送到累加器
MOV Rn,A ;累加器傳送到寄存器
MOV Rn,direct ;直接位址傳送到寄存器
MOV Rn,#data ;累加器傳送到直接位址
MOV direct,Rn ;寄存器傳送到直接位址
MOV direct,direct ;直接位址傳送到直接位址
MOV direct,A ;累加器傳送到直接位址
MOV direct,@Ri ;間接RAM 傳送到直接位址
MOV direct,#data ;立即數傳送到直接位址
MOV @Ri,A ;直接位址傳送到直接位址
MOV @Ri,direct ;直接位址傳送到間接RAM
MOV @Ri,#data ;立即數傳送到間接RAM
MOV DPTR,#data16 ;16 位常數加載到資料指針
MOVC A,@A+DPTR ;代碼位元組傳送到累加器
MOVC A,@A+PC ;代碼位元組傳送到累加器
MOVX A,@Ri ;外部RAM(8 位址)傳送到累加器
MOVX A,@DPTR ;外部RAM(16 位址)傳送到累加器
MOVX @Ri,A ;累加器傳送到外部RAM(8 位址)
MOVX @DPTR,A ;累加器傳送到外部RAM(16 位址)
PUSH direct ;直接位址壓入堆棧
POP direct ;直接位址彈出堆棧
XCH A,Rn ;寄存器和累加器交換
XCH A, direct ;直接位址和累加器交換
XCH A, @Ri ;間接RAM 和累加器交換
XCHD A, @Ri ;間接RAM 和累加器交換低4 位位元組
(2)算術操作類 24
INC A ;累加器加1
INC Rn ;寄存器加1
INC direct ;直接位址加1
INC @Ri ;間接RAM 加1
INC DPTR ;資料指針加1
DEC A ;累加器減1
DEC Rn ;寄存器減1
DEC direct ;直接位址減1
DEC @Ri ;間接RAM 減1
MUL AB ;累加器和B 寄存器相乘結果放在B(H),A(D)
DIV AB ;累加器除以B 寄存器,商->A,餘數->B
DA A ;累加器十進制調整
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 ;立即數與累加器求和(帶進位)
SUBB A,Rn ;累加器減去寄存器(帶借位)
SUBB A,direct ;累加器減去直接位址(帶借位)
SUBB A,@Ri ;累加器減去間接RAM(帶借位)
SUBB A,#data ;累加器減去立即數(帶借位)
(3)邏輯運算類 25
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 ;累加器清零
CPL A ;累加器求反
RL A ;累加器循環左移
RLC A ;帶進位累加器循環左移
RR A ;累加器循環右移
RRC A ;帶進位累加器循環右移
SWAP A ;累加器高、低4 位交換
(4)控制轉移類 17
JMP @A+DPTR ;相對DPTR 的無條件間接轉移
JZ rel ;累加器為0 則轉移
JNZ rel ;累加器為1 則轉移
CJNE A,direct,rel ;比較直接位址和累加器,不相等轉移
CJNE A,#data,rel ;比較立即數和累加器,不相等轉移
CJNE Rn,#data,rel ;比較寄存器和立即數,不相等轉移
CJNE @Ri,#data,rel ;比較立即數和間接RAM,不相等轉移
DJNZ Rn,rel ;寄存器減1,不為0 則轉移
DJNZ direct,rel ;直接位址減1,不為0 則轉移
NOP ;空操作,用于短暫延時
ACALL add11 ;絕對調用子程式
LCALL add16 ;長調用子程式
RET ;從子程式傳回
RETI ;從中斷服務子程式傳回
AJMP add11 ;無條件絕對轉移
LJMP add16 ;無條件長轉移
SJMP rel ;無條件相對轉移
(5)位操作類 17
CLR ;清進位位
CLR bit ;清直接尋址位
SETB C ;置位進位位
SETB bit ;置位直接尋址位
CPL C ;取反進位位
CPL bit ;取反直接尋址位
ANL C,bit ;直接尋址位“與”到進位位
ANL C,/bit ;直接尋址位的反碼“與”到進位位
ORL C,bit ;直接尋址位“或”到進位位
ORL C,/bit ;直接尋址位的反碼“或”到進位位
MOV C,bit ;直接尋址位傳送到進位位
MOV bit, C ;進位位位傳送到直接尋址
JC rel ;如果進位位為1 則轉移
JNC rel ;如果進位位為0 則轉移
JB bit,rel ;如果直接尋址位為1 則轉移
JNB bit,rel ;如果直接尋址位為0 則轉移
JBC bit,rel ;直接尋址位為1 則轉移并清除該位