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 $ 指本條指令的起始位置 以下課程可免費試聽C語言、電子、PCB、STM32、Linux、FPGA、JAVA、安卓等。 想學習的你和我聯系預約就可以免費聽課了。 宋工企鵝號:3524-6590-88 Tel/WX:173--1795--1908 |