|
51指令系統 | 助記符 | 指令說明 | 字節數 | 周期數 | | (數據傳遞類指令) | | 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 | | $ | 指本條指令的起始位置 |
word版本:
51單片機指令系統.docx
(34.28 KB, 售價: 1 E幣)
2021-5-9 21:39 上傳
點擊文件名下載附件
售價: 1 E幣 [記錄]
[ 購買]
【必讀】版權免責聲明
1、本主題所有言論和內容純屬會員個人意見,與本論壇立場無關。2、本站對所發內容真實性、客觀性、可用性不做任何保證也不負任何責任,網友之間僅出于學習目的進行交流。3、對提供的數字內容不擁有任何權利,其版權歸原著者擁有。請勿將該數字內容進行商業交易、轉載等行為,該內容只為學習所提供,使用后發生的一切問題與本站無關。 4、本網站不保證本站提供的下載資源的準確性、安全性和完整性;同時本網站也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的損失或傷害。 5、本網站所有軟件和資料均為網友推薦收集整理而來,僅供學習用途使用,請務必下載后兩小時內刪除,禁止商用。6、如有侵犯你版權的,請及時聯系我們(電子郵箱1370723259@qq.com)指出,本站將立即改正。
|