C51彙編指令集

 
指令集:
助記符  字節數 週期數
功能說明   

1:算術操作類指令:
 
ADD A,Rn  1 1 
寄存器加到累加器 
ADD A,direct  2 2 
直接尋址字節加到累加器 
ADD A,@Ri  1 2 
間址RAM加到累加器 
ADD A,#data  2 2 
立即數加到累加器 
ADDC A,Rn  1 1 
寄存器加到累加器(帶進位) 
ADDC A,direct  2 2 
直接尋址字節加到累加器(帶進位) 
ADDC A,@Ri  1 2 
間址RAM加到累加器(帶進位) 
ADDC A,#data  2 2 
立即數加到累加器(帶進位) 
SUBB A,Rn  1 1 
累加器減去寄存器(帶借位) 
SUBB A,direct  2 2 
累加器減去間接尋址RAM(帶借位) 
SUBB A,@Ri  1 2 
累加器減去間址RAM(帶借位) 
SUBB A,#data  2 2 
累加器減去立即數(帶借位) 
INC A  1 1 
累加器加1 
INC Rn  1 1 
寄存器加1 
INC direct  2 2 
直接尋址字節加1 
INC @Ri  1 2 
間址RAM加1 
DEC A  1 1 
累加器減1 
DEC Rn  1 1 
寄存器減1 
DEC direct  2 2 
直接尋址字節減1 
DEC @Ri  1 2 
間址RAM減1 
INC DPTR  1 1 
數據地址加1 
MUL AB  1 4 
累加器和寄存器B加乘 
DIV AB  1 8 
累加器除以寄存器B 
DA A  1 1 
累加器十進制調整 



2:邏輯操作類指令:

ANL A,Rn  1 1 
寄存器“與”到累加器  
ANL A,direct  2 2 
直接尋址字節“ 與”到累加器 
ANL A,@Ri  1 2 
間址RAM“與”到累加器  
ANL A,#data  2 2 
立即數“與”到累加器  
ANL direct,A  2 2 
累加器“與”到直接尋址字節   
ANL direct,#data  3 3 
立即數“與”到直接尋址字節  
ORL A,Rn  1 1 
寄存器“或”到累加器  
ORL A,direct  2 2 
直接尋址字節“  
ORL A,@Ri  1 2 
間址RAM“或”到累加器   
ORL A,#data  2 2 
立即數“或”到累加器   
ORL direct,A  2 2 
累加器“或”到直接尋址字節   
ORL direct,#data  3 3 
立即數“或”到直接尋址字節   
XRL A,Rn  1 1 
寄存器“異或”到累加器  
XRL A,direct  2 2 
直接尋址數“異或”到累加器  
XRL A,@Ri  1 2 
間址RAM“異或”到累加器  
XRL A,#data  2 2 
立即數“異或”到累加器  
XRL direct,A  2 2 
累加器“異或”到直接尋址字節  
XRL direct,#data  3 3 
立即數“到直接尋址字節  
CLR A  1 1 
累加器清零 
CPL A  1 1 
累加器求反 
RL A  1 1 
循環循環左移 
RLC A  1 1 
經過進位位的累加器循環左移 
RR A  1 1 
累加器循環右移 
RRC A  1 1 
經過進位位的累加器循環右移 
SWAP A  1 1 
累加器內高低半字節交換 



3:數據傳輸類指令:
 
MOV A,Rn  1 1 
寄存器傳送到累加器A 
MOV A,direct  2 2 
直接尋址字節傳送到累加器 
MOV A,@Ri  1 2 
間址RAM傳送到累加器 
MOV A,#data  2 2 
立即數傳送到累加器 
MOV Rn,A  1 1 
累加器傳送到寄存器 
MOV Rn,direct  2 2 
直接尋址字節傳送到寄存器 
MOV Rn,#data  2 2 
立即數傳送到寄存器 
MOV direct,A  2 2 
累加器傳送到直接尋址字節 
MOV direct,Rn  2 2 
寄存器傳送到直接尋址字節 
MOV direct,direct  3 3 
直接尋址字節傳送到直接尋址字節 
MOV direct,@Ri  2 2 
間址RAM傳送到直接尋址字節 
MOV direct,#data  3 3 
立即數傳送到直接尋址字節 
MOV @Ri,A  1 2 
累加器傳送到間址RAM 
MOV @Ri,direct  2 2 
直接尋址數傳送到間址RAM 
MOV @Ri,#data  2 2 
立即數傳送到間址RAM 
MOV DPTR,#data16  3 3 
16位常數裝入數據指針 
MOVC A,@A+DPTR  1 3 
相對於DPTR的代碼字節傳送到累加器 
MOVC A,@A+PC  1 3 
相對於PC的代碼字節傳送到累加器 
MOVX A,@Ri  1 3 
外部RAM(8位地址)數傳送到A 
MOVX @Ri,A  1 3 
累加器傳到外部RAM(8位地址) 
MOVX A,@DPTR  1 3 
外部RAM(16位地址)傳送到A 
MOVX @DPTR,A  1 3 
累加器傳到外部RAM(16位地址) 
PUSH direct  2 2 
直接尋址字節壓入棧頂 
POP direct  2 2 
棧頂數據彈出到直接尋址字節 
XCH A,Rn  1 1 
寄存器和累加器交換 
XCH A,direct  2 2 
直接尋址字節與累加器交換 
XCH A,@Ri  1 2 
間址RAM與累加器交換 
XCHD A,@Ri  1 2 
間址RAM和累加器交換低半字節 



4:位操作類指令 

CLR C  1 1 
清進位位 
CLR bit  2 2 
清直接尋址位 
SETB C  1 1 
進位位置1 
SETB bit  2 2 
直接尋址位置位 
CPL C  1 1 
進位位取反 
CPL bit  2 2 
直接尋址位取反 
ANL C,bit  2 2 
直接尋址位“與”到進位位  
ANL C,/bit  2 2 
直接尋址位的反碼“與”到進位位   
ORL C,bit  2 2 
直接尋址位“或”到進位位   
ORL C,/bit  2 2 
直接尋址位的反碼“或”到進位位   
MOV C,bit  2 2 
直接尋址位傳送到進位位 
MOV bit,C  2 2 
進位位傳送到直接尋址位 
JC rel  2 2/3 
若進位位爲1則跳轉 
JNC rel  2 2/3 
若進位位爲零則跳轉 
JB bit,rel  3 3/4 
若直接尋址位爲1則跳轉 
JNB bit,rel  3 3/4 
若直接尋址位爲零則跳轉 
JBC bit,rel  3 3/4 
若直接尋址位爲1則跳轉,並清除該位 


5:控制轉移類指令:
 
ACALL addr11  2 3 
絕對調用子程序 
LCALL addr16  3 4 
長調用子程序 
RET  1 5 
從子程序返回 
RETI  1 5 
從中斷返回 
AJMP addr11  2 3 
絕對轉移 
LJMP addr16  3 4 
長轉移 
SJMP rel  2 3 
短轉移(相對偏移) 
JMP @A+DPTR  1 3 
相對DPTR的間接轉移 
JZ rel  2 2/3 
累加器爲0則轉移 
JNZ rel  2 2/3 
累加器爲非0則轉移 
CJNE A,direct,rel  3 3/4 
比較直接尋址字節與A,不相等則轉移 
CJNE A,#data,rel  3 3/4 
比較立即數與A,不相等則轉移 
CJNE Rn,#data,rel  3 3/4 
比較立即數與寄存器,不相等則轉移 
CJNE @Ri,#data,rel  3 4/5 
比較立即數與間接尋址RAM,不相等則轉移 
DJNZ Rn,rel  2 2/3 
寄存器減1,不爲零則轉移 
DJNZ direct,rel  3 3/4 
直接尋址字節減1,不爲零則轉移 
NOP  1 1 
空操作 



註釋:
Rn –  當前選擇的寄存器區的寄存器 R0-R7。 
 
@Ri –  通過寄存器 R0-R1 間接尋址的數據 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程序存儲器空間
內的任何位置。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章