指令集: 助記符 字節數 週期數 功能說明 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程序存儲器空間 內的任何位置。
C51彙編指令集
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.