| 助記符 | 指令說明 | 字節數 | 周期數 | |
| (數據傳遞類指令) | ||||
| 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 |
| $ | 指本條指令的起始位置 |
51單片機指令系統.docx
(34.28 KB, 售價: 1 E幣)
| 歡迎光臨 ELEOK (http://www.afoofa.cn/) | Powered by Discuz! X5.0 |