1. <rp id="9hfgf"></rp><th id="9hfgf"></th>
    2. <th id="9hfgf"></th>

      專注電子技術學習與研究
      當前位置:單片機教程網 >> 基礎教程 >> 瀏覽文章

      51單片機指令表

      作者:佚名   來源:本站原創   點擊數:  更新時間:2011年10月02日   【字體:

      此表主要是為了方便大家查閱每條指令的作用,寫法以及字節數和周期數,建議大家保存為書簽。

      助記符
      指令說明
      字節數
      周期數
      (數據傳遞類指令)
      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
      $
      指本條指令的起始位置
      關閉窗口
      上一篇:Keil教程(1)

      相關文章