<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開發網

      電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
      搜索: 您現在的位置: 電子開發網 >> 電子開發 >> 單片機 >> 正文

      51單片機匯編程序集

      作者:佚名    文章來源:本站原創    點擊數:    更新時間:2008-10-31


      1、片內RAM初始化子程序
      2、片外RAM初始化子程序
      3、片外RAM初始化子程序(雙字節個單元)
      4、內部RAM數據復制程序
      5、外部RAM數據復制程序
      6、外部RAM數據復制程序
      7、外部RAM數據復制到內部RAM程序
      8、限幅濾波程序
      9、中位值濾波程序
      10、N點算術平均濾波
      11、N點加權平均濾波
      12、一階加權滯后濾波程序
      13、雙字節取補程序
      14、N節取補程序
      15、雙字節無符號數加法程序
      16、N字節無符號數加法程序
      17、雙字節無符號數減法程序
      18、N字節無符號數減法程序
      19、單字節無符號數乘法程序
      20、單字節無符號數乘法程序
      21、單字節無符號數乘法程序
      22、雙字節無符號數乘法程序
      23、雙字節無符號數乘法程序
      24、N字節無符號數乘法程序
      25、單字節無符號除法程序
      26、單字節無符號除法程序
      27、雙字節無符號除法程序
      28、N字節無符號除法程序(組合)
      29、N字節無符號除法程序
      30、N字節數據左移程序
      31、原碼有符號雙字節減法程序
      32、原碼有符號雙字節加法程序
      33、原碼有符號雙字節乘法程序
      34、原碼有符號雙字節除法程序
      35、單字節順序查找程序
      36、單字節順序查找程序
      37、雙字節字符串順序查找程序
      38、雙字節字符串順序查找程序
      39、N字節字符串順序查找程序
      40、單字節最值查找程序
      41、浮點數順序查找程序

      42、浮點數最值查找程序
      43、單字節折半查找程序

      ;片內RAM初始化子程序
      IBCLR    :MOV    A,R0
                MOV    R1,A
                CLR    A
      IBC1     :MOV    @R1,A
                INC    R1
                DJNZ   R7,IBC1
                RET
      ;片外RAM初始化子程序
      EBCLR1   :MOV    A,ADDPL
                MOV    DPL,A
                MOV    A,ADDPH
                MOV    DPH,A
                CLR    C
      EBC11    :MOVX   @DPTR,A
                INC    DPTR
                DJNZ   R7,EBC11
                RET
      ;片外RAM初始化子程序(雙字節個單元)
      EBCLR2   :MOV    A,ADDPL
                MOV    DPL,A
                MOV    A,ADDPH
                MOV    DPH,A
                MOV    A,R7
                JZ     EBC21
                INC    R6
      EBC21    :CLR    A
                MOVX   @DPTR,A
                INC    DPTR
                DJNZ   R7,EBC21
                DJNZ   R6,EBC21
                RET

      ;內部RAM數據復制程序
      ;入口    :R0,R7
      ;占用資源:A
      ;堆棧需求:2字節
      ;出口    :R1
      IBMOV    :MOV    A,R0
                ADD    A,R7
                MOV    R0,A
                MOV    A,R1
                ADD    A,R7
                MOV    R1,A
      IBM1     :DEC    R0
                DEC    R1
                MOV    A,@R0
                MOV    @R1,A
                DJNZ   R7,IBM1
                RET
      ;外部RAM數據復制程序
      ;入口    :ADDPH,ADDPL,R7
      ;占用資源:ACC
      ;堆棧需求:2字節
      ;出口    :R0,R1
      EBMOV1   :MOV    A,ADDPL
                ADD    A,R7
                MOV    DPL,A
                CLR    A
                ADDC   A,ADDPH
                MOV    DPH,A
                MOV    A,R7
                ADD    A,R1
                XCH    A,R0
                ADDC   A,#00H
                MOV    P2,A
      EBM11    :DEC    R0
                CJNE   R0,#0FFH,EBM12
                DEC    P2
      EBM12    :DEC    DPL
                MOV    A,DPL
                CJNE   A,#0FFH,EBM13
                DEC    DPH
      EBM13    :MOVX   A,@R0
                MOVX   @DPTR,A
                DJNZ   R7,EBM11
                RET
      ;外部RAM數據復制程序
      ;入口    :ADDPH,ADDPL,R6,R7
      ;占用資源:ACC
      ;堆棧需求:2字節
      ;出口    :R0,R1
      EBMOV2   :MOV    A,ADDPL
                ADD    A,R7
                MOV    DPL,A
                MOV    A,R6
                ADDC   A,ADDPH
                MOV    DPH,A
                MOV    A,R7
                ADD    A,R1
                XCH    A,R0
                ADDC   A,R6
                MOV    P2,A
                MOV    A,R7
                JZ     EBM21
                INC    R6
      EBM21    :DEC    R0
                CJNE   R0,#0FFH,EBM22
                DEC    P2
      EBM22    :DEC    DPL
                MOV    A,DPL
                CJNE   A,#0FFH,EBM23
                DEC    DPH
      EBM23    :MOVX   A,@R0
                MOVX   @DPTR,A
                DJNZ   R7,EBM21
                DJNZ   R6,EBM21
                RET
      ;外部RAM數據復制到內部RAM程序
      ;入口    :ADDPH,ADDPL,R7
      ;占用資源:ACC
      ;堆棧需求:2字節
      ;出口    :R0
      ITEMOV  :MOV    A,ADDPL
               ADD    A,R7
               MOV    DPL,A
               MOV    A,ADDPH
               ADDC   A,#00H
               MOV    DPH,A
               MOV    A,R0
               ADD    A,R7
               MOV    R0,A
      ITEM1   :DEC    R0
               DEC    DPL
               MOV    A,DPL
               CJNE   A,#0FFH,ITEM2
               DEC    DPH
      ITEM2   :MOVX   A,@DPTR
               MOV    @R0,A
               DJNZ   R7,ITEM1
               RET
       
      ;限幅濾波程序
      ;入口    :A,SDAT,DELTY
      ;占用資源:B
      ;堆棧需求:2字節
      ;出口    :A
      JUGFILT  :MOV    B,A
                CLR    C
                SUBB   A,SDAT
                JNC    JUGFT1
                CPL    A
                INC    A
      JUGFT1   :SETB   A
                SUBB   A,#DELTY
                JNC    JUGFT3
                MOV    A,SDAT
                RET
      JUGFT3   :MOV    A,B
                MOV    SDAT,A   
                RET
      ;中位值濾波程序
      ;入口    :ADDPH,ADDPL,N
      ;占用資源:ESELSORT
      ;堆棧需求:4字節
      ;出口    :A
      MEDFILT  :LCALL  ESELSORT
                MOV    A,N
                CLR    C
                RRC    A
                ADD    A,ADDPL
                MOV    DPL,A
                MOV    A,ADDPH
                MOV    DPH,A
                JNC    MEDFT1
                INC    DPH
      MEDFT1   :MOVX   A,@DPTR
                RET
      ;N點算術平均濾波
      ;入口    :ADDPH,ADDPL,N
      ;占用資源:B,R3,R4
      ;堆棧需求:2字節
      ;出口    :A
      AVFILT   :MOV    A,ADDPL
                MOV    DPL,A
                MOV    A,ADDPH
                MOV    DPH,A
                CLR    A
                MOV    R3,A
                MOV    R4,A
                MOV    R7,N
      AVFT1    :MOVX   A,@DPTR
                INC    DPTR
                ADD    A,R4
                MOV    R4,A
                JNC    AVFT2
                INC    R3
      AVFT2    :DJNZ   R7,AVFT1
                MOV    R7,N
                MOV    R2,#00H
                LCALL  NDIV31
                MOV    A,R4
                RET
      ;N點加權平均濾波
      ;入口    :ADDPH,ADDPL,N
      ;占用資源:B,R3,R4
      ;堆棧需求:2字節
      ;出口    :A
      QAVFILT  :CLR    A
                MOV    R3,A
                MOV    R4,A
                MOV    R7,N
                MOV    P2,ADDPH
                MOV    R1,ADDPL
                MOV    DPTR,#QAVTAB
      QAVFT1   :MOVC   A,@A+DPTR
                MOV    B,A
                MOVX   A,@R1
                INC    DPTR
                INC    R1
                MUL    AB
                ADD    A,R4
                MOV    R4,A
                MOV    A,B
                ADDC   A,R3
                MOV    R3,A
                DJNZ   R7,QAVFT1
                MOV    A,R4
                JNB    ACC.7,QAVFT2
                INC    R3
      QAVFT2   :MOV    A,R3
                RET
      QAVTAB   :DB
      ;一階加權滯后濾波程序
      ;入口    :A,DELTY
      ;占用資源:B,R3,R4
      ;堆棧需求:2字節
      ;出口    :A
      BQFILT   :MOV    B,A
                CLR    A
                MOV    DPTR,#ABTAB
                MOVC   A,@A+DPTR
                MUL    AB
                MOV    R4,A
                MOV    R3,B
                MOV    A,#01H
                MOVC   A,@A+DPTR
                MOV    B,DELTY
                MUL    AB
                ADD    A,R4
                MOV    R4,A
                MOV    A,B
                ADDC   A,R3
                MOV    R3,A
                MOV    A,R4
                JNB    ACC.7,FT1
                INC    R3
      FT1      :MOV    A,R3
                MOV    DELTY,A
                RET
      BQTAB    :DB     80H,80H
       
      ;雙字節取補程序 /(R3R4)=(R3R4)
      ;入口    :R3,R4
      ;占用資源:ACC
      ;堆棧需求:2字節
      ;出口    :R3,R4
      CMPT     :MOV    A,R4
                CPL    A
                ADD    A,#01H
                MOV    R4,A
                MOV    A,R3
                CPL    A
                ADDC   A,#00H
                MOV    R3,A
                RET
      ;N節取補程序 /([R0])=([R0])
      ;入口    :R0,R7
      ;占用資源:ACC,B
      ;堆棧需求:2字節
      ;出口    :R0
      NCMPTN   :MOV    B,R0
                SETB   C
      NCPT1    :MOV    A,@R0
                CPL    A
                ADDC   A,#00H
                MOV    @R0,A
                INC    R0
                DJNZ   R7,NCPT1
                MOV    R0,B
                RET
      ;雙字節無符號數加法程序 (R3R4+R6R7)=(R3R4)
      ;入口    :R3,R4,R6,R7
      ;占用資源:ACC
      ;堆棧需求:2字節
      ;出口    :R3,R4,CF
      NADD     :MOV    A,R4
                ADD    A,R7
                MOV    R4,A
                MOV    A,R3
                ADDC   A,R6
                MOV    R3,A
                RET

      ;N字節無符號數加法程序 ([R0]+[R1])=([R0])
      ;入口    :R0,R1,R7
      ;占用資源:ACC,B
      ;堆棧需求:2字節
      ;出口    :R0,CF
      NADDN    :MOV    B,R0
                CLR    C
      NADN1    :MOV    A,@R0
                ADDC   A,@R1
                MOV    @R0,A
                INC    R0
                INC    R1
                DJNZ   R7,NADN1
                MOV    R0,B
                RET
      ;雙字節無符號數減法程序 (R3R4-R6R7)=(R3R4)
      ;入口    :R3,R4,R6,R7
      ;占用資源:ACC
      ;堆棧需求:2字節
      ;出口    :R3,R4
      NSUB     :MOV    A,R4
                CLR    C
                SUBB   A,R7
                MOV    R4,A
                MOV    A,R3
                SUBB   A,R6
                MOV    R3,A
                RET
      ;N字節無符號數減法程序 ([R0]-[R1])=([R0])
      ;入口    :R0,R1,R7
      ;占用資源:ACC,B
      ;堆棧需求:2字節
      ;出口    :R0,CF
      NSUBN    :MOV    B,R0
                MOV    R7,N
                CLR    C
      NSUBN1   :MOV    A,@R0
                SUBB   A,@R1
                MOV    @R0,A
                INC    R0
                INC    R1
                DJNZ   R7,NSUBN1
                MOV    R0,B
                RET
      ;單字節無符號數乘法程序 (R3R4*R7)=(R2R3R4)
      ;入口    :R3,R4,R7
      ;占用資源:ACC,B
      ;堆棧需求:2字節
      ;出口    :R2,R3,R4
      NMUL21   :MOV    A,R4
                MOV    B,R7
                MUL    AB
                MOV    R4,A
                MOV    A,B
                XCH    A,R3
                MOV    B,R7
                MUL    AB
                ADD    A,R3
                MOV    R3,A
                CLR    A
                ADDC   A,B
                MOV    R2,A
                CLR    OV
                RET
      ;單字節無符號數乘法程序 (R2R3R4*R7)=(R5R2R3R4)
      ;入口    :R2,R3,R4,R6,R7
      ;占用資源:ACC,B
      ;堆棧需求:2字節
      ;出口    :R5,R2,R3,R4
      NMUL31   :MOV    A,R4
                MOV    B,R7
                MUL    AB
                MOV    R4,A
                MOV    A,B
                XCH    A,R3
                MOV    B,R7
                MUL    AB
                ADD    A,R3
                MOV    R3,A
                CLR    A
                ADDC   A,B
                XCH    A,R2
                MOV    B,R7
                MUL    AB
                ADD    A,R2
                MOV    R2,A
                CLR    A
                ADDC   A,B
                MOV    R5,A
                CLR    OV
                RET
      ;單字節無符號數乘法程序 (R5R2R3R4*R7)=(R7R5R2R3R4)
      ;入口    :R5,R2,R3,R4,R7
      ;占用資源:ACC,B
      ;堆棧需求:2字節
      ;出口    :R7,R5,R2,R3,R4
      NMUL41   :MOV    A,R4
                MOV    B,R7
                MUL    AB
                MOV    R4,A
                MOV    A,B
                XCH    A,R3
                MOV    B,R7
                MUL    AB
                ADD    A,R3
                MOV    R3,A
                CLR    A
                ADDC   A,B
                XCH    A,R2
                MOV    B,R7
                MUL    AB
                ADD    A,R2
                MOV    R2,A
                CLR    A
                ADDC   A,B
                XCH    A,R5
                MOV    B,R7
                MUL    AB
                ADD    A,R5
                MOV    R5,A
                CLR    A
                ADDC   A,B
                MOV    R7,A
                CLR    OV
                RET
      ;雙字節無符號數乘法程序 (R3R4*R6R7)=(R5R2R3R4)
      ;入口    :R3,R4,R6,R7
      ;占用資源:ACC,B
      ;堆棧需求:2字節
      ;出口    :R5,R2,R3,R4
      NMUL22   :MOV    A,R4
                MOV    B,R7
                MUL    AB
                XCH    A,R4
                MOV    R5,B
                MOV    B,R6
                MUL    AB
                ADD    A,R5
                MOV    R5,A
                CLR    A
                ADDC   A,B
                MOV    R2,A
                MOV    A,R3
                MOV    B,R7
                MUL    AB
                ADD    A,R5
                MOV    R5,A
                MOV    A,B
                ADDC   A,R2
                MOV    R2,A
                CLR    A
                ADDC   A,#00H
                XCH    A,R3
                MOV    B,R6
                MUL    AB
                ADD    A,R2
                MOV    R2,A
                MOV    A,B
                ADDC   A,R3
                XCH    A,R5
                MOV    R3,A
                CLR    OV
                RET
      ;雙字節無符號數乘法程序 (R2R3R4*R6R7)=(R1R5R2R3R4)
      ;入口    :R2,R3,R4,R6,R7
      ;占用資源:ACC,B
      ;堆棧需求:2字節
      ;出口    :R1,R5,R2,R3,R4
      NMUL32   :MOV    A,R4
                MOV    B,R7
                MUL    AB
                XCH    A,R4
                MOV    R5,B
                MOV    B,R6
                MUL    AB
                ADD    A,R5
                MOV    R5,A
                CLR    A
                ADDC   A,B
                MOV    R1,A
                MOV    A,R3
                MOV    B,R7
                MUL    AB
                ADD    A,R5
                MOV    R5,A
                MOV    A,B
                ADDC   A,R1
                MOV    R1,A
                CLR    A
                ADDC   A,#00H
                XCH    A,R3
                MOV    B,R6
                MUL    AB
                ADD    A,R1
                MOV    R1,A
                MOV    A,B
                ADDC   A,R3
                XCH    A,R5
                MOV    R3,A
                MOV    A,R2
                MOV    B,R7
                MUL    AB
                ADD    A,R1
                MOV    R1,A
                MOV    A,B
                ADDC   A,R5
                MOV    R5,A
                CLR    A
                ADDC   A,#00H
                XCH    A,R2
                MOV    B,R6
                MUL    AB
                ADD    A,R5
                MOV    R5,A
                MOV    A,B
                ADDC   A,R2
                XCH    A,R1
                MOV    R2,A
                CLR    OV
                RET
      ;N字節無符號數乘法程序 ([R0]*[R1])=([R0])
      ;入口    :R0,R1,M,N
      ;占用資源:ACC,B,R2,R5,R6,R7,NCNT
      ;堆棧需求:2字節
      ;出口    :R0
      NMULMN   :MOV    A,M
                ADD    A,R0
                MOV    R5,A
                XCH    A,R1
                XCH    A,R5
                ADD    A,N
                XCH    A,R0
                MOV    R6,A
                MOV    B,M
                MOV    NCNT,B
      NMLMN1   :DEC    R0
                DEC    R1
                CLR    A
                XCH    A,@R1
                MOV    @R0,A
                DJNZ   NCNT,NMLMN1
                MOV    NCNT,B
      NMLMN2   :CLR    A
                XCH    A,@R0
                MOV    R2,A
                MOV    A,R6
                MOV    R0,A
                MOV    A,R5
                MOV    R1,A
                MOV    R7,N
                CLR    C
      NMLMN3   :MOV    A,R2
                MOV    B,@R1
                INC    R1
                MUL    AB
                ADDC   A,@R0
                MOV    @R0,A
                INC    R0
                MOV    A,B
                ADDC   A,@R0
                MOV    @R0,A
                DJNZ   R7,NMLMN3
                INC    R0
                INC    R6
                DJNZ   NCNT,NMLMN2
                MOV    A,R0
                CLR    C
                SUBB   A,M
                SUBB   A,N
                MOV    R0,A
                RET
      ;單字節無符號除法程序 (R2R3R4/R7)=(R2)R3R4 余數R7
      ;入口    :R2,R3,R4,R7
      ;占用資源:ACC,B,F0
      ;堆棧需求:3字節
      ;出口    :(R2),R3,R4,R7,OV
      NDIV31   :MOV    A,R2
                MOV    B,R7
                DIV    AB
                PUSH   A
                MOV    R2,B
                MOV    B,#10H
      NDV311   :CLR    C
                MOV    A,R4
                RLC    A
                MOV    R4,A
                MOV    A,R3
                RLC    A
                MOV    R3,A
                MOV    A,R2
                RLC    A
                MOV    R2,A
                MOV    F0,C
                CLR    C
                SUBB   A,R7
                JB     F0,NDV312
                JC     NDV313
      NDV312   :MOV    R2,A
                INC    R4
      NDV313   :DJNZ   B,NDV311
                POP    A
                CLR    OV
                JZ     NDV314
                SETB   OV
      NDV314   :XCH    A,R2
                MOV    R7,A
                RET
      ;單字節無符號除法程序 (R5R2R3R4/R7)=(R5)R2R3R4 余數R7
      ;入口    :R2,R3,R4,R7
      ;占用資源:ACC,B,F0
      ;堆棧需求:3字節
      ;出口    :(R5),R2,R3,R4,R7,OV
      NDIV41   :MOV    A,R5
                MOV    B,R7
                DIV    AB
                PUSH   A
                MOV    R5,B
                MOV    B,#18H
      NDV411   :CLR    C
                MOV    A,R4
                RLC    A
                MOV    R4,A
                MOV    A,R3
                RLC    A
                MOV    R3,A
                MOV    A,R2
                RLC    A
                MOV    R2,A
                MOV    A,R5
                RLC    A
                MOV    R5,A
                MOV    F0,C
                CLR    C
                SUBB   A,R7
                JB     F0,NDV412
                JC     NDV413
      NDV412   :MOV    R5,A
                INC    R4
      NDV413   :DJNZ   B,NDV411
                POP    A
                CLR    OV
                JZ     NDV414
                SETB   OV
      NDV414   :XCH    A,R5
                MOV    R7,A
                RET
      ;雙字節無符號除法程序 (R5R2R3R4/R6R7)=(R2)R3R4 余數R6R7
      ;入口    :R5,R2,R3,R4,R6,R7
      ;占用資源:ACC,B,F0
      ;堆棧需求:4字節
      ;出口    :(R2),R3,R4,R6,R7,OV
      NDIV42   :MOV    A,R1
                PUSH   A
                MOV    B,#00H
      NDV421   :MOV    A,R2
                CLR    C
                SUBB   A,R7
                MOV    R1,A
                MOV    A,R5
                SUBB   A,R6
                JC     NDV422
                MOV    R5,A
                MOV    A,R1
                MOV    R2,A
                INC    B
                SJMP   NDV421
      NDV422   :PUSH   B
                MOV    B,#10H
      NDV423   :CLR    C
                MOV    A,R4
                RLC    A
                MOV    R4,A
                MOV    A,R3
                RLC    A
                MOV    R3,A
                MOV    A,R2
                RLC    A
                MOV    R2,A
                XCH    A,R5
                RLC    A
                XCH    A,R5
                MOV    F0,C
                CLR    C
                SUBB   A,R7
                MOV    R1,A
                MOV    A,R5
                SUBB   A,R6
                JB     F0,NCV424
                JC     NDV425
      NCV424   :MOV    R5,A
                MOV    A,R1
                MOV    R2,A
                INC    R4
      NDV425   :DJNZ   B,NDV423
                POP    A
                CLR    OV
                JNZ    NDV426
                SETB   OV
      NDV426   :XCH    A,R2
                MOV    R7,A
                MOV    A,R5
                MOV    R6,A
                POP    A
                MOV    R1,A
                RET
      ;N字節無符號除法程序(組合) ([R0]/[R1])=([R0])
      ;入口    :R0,R1,M,N
      ;占用資源:ACC,R2,R3,R4,R5,R7,NCNT,F0,NADDN,NSUBBN,NRLCN
      ;堆棧需求:4字節
      ;出口    :R0
      ;NDIVMN   :MOV    A,M
                CLR    C
                SUBB   A,N
                MOV    NCNT,A
                ADD    A,R0
                MOV    R4,A
                XCH    A,R0
                MOV    R3,A
                MOV    A,R1
                MOV    R5,A
                MOV    R2,#00H
      NDVMN1   :MOV    R7,N
                LCALL  NSUBN
                MOV    A,R5
                MOV    R1,A
                JC     NDVMN2
                INC    R2
                SJMP   NDVMN1
      NDVMN2   :MOV    R7,N
                LCALL  NADDN
                MOV    A,NCNT
                SWAP   A
                RR     A
                MOV    NCNT,A
      NDVMN3   :MOV    A,R3
                MOV    R0,A
                MOV    R7,M
                LCALL  NRLCN
                MOV    F0,C
                MOV    A,R4
                MOV    R0,A
                MOV    A,R5
                MOV    R1,A
                MOV    R7,N
                LCALL  NSUBN
                JB     F0,NDVMN4
                JC     NDVMN5
      NDVMN4   :MOV    A,R3
                MOV    R0,A
                INC    @R0
                SJMP   NDVMN6
      NDVMN5   :MOV    A,R5
                MOV    R1,A
                MOV    R7,N
                LCALL  NADDN
      NDVMN6   :DJNZ   NCNT,NDVMN3
                MOV    A,R4
                MOV    R1,A
                MOV    A,R2
                MOV    @R1,A
                MOV    A,R3
                MOV    R0,A
                RET
      ;N字節無符號除法程序(集成) ([R0]/R[1])=([R0])
      ;入口    :R0,R1,M,N
      ;占用資源:ACC,R2,R3,R4,R5,R7,F0
      ;堆棧需求:2字節
      ;出口    :R0
      NDIVMN   :MOV    A,M
                CLR    C
                SUBB   A,N
                MOV    B,A
                ADD    A,R0
                MOV    R4,A
                XCH    A,R0
                MOV    R3,A
                MOV    A,R1
                MOV    R5,A
                MOV    R2,#00H
      NDVMN1   :MOV    R7,N
                CLR    C
      NDVMN2   :MOV    A,@R0
                SUBB   A,@R1
                MOV    @R0,A
                INC    R0
                INC    R1
                DJNZ   R7,NDVMN2
                MOV    A,R4
                MOV    R0,A
                MOV    A,R5
                MOV    R1,A
                JC     NDVMN3
                INC    R2
                SJMP   NDVMN1
      NDVMN3   :MOV    R7,N
                CLR    C
      NDVMN4   :MOV    A,@R0
                ADDC   A,@R1
                MOV    @R0,A
                INC    R0
                INC    R1
                DJNZ   R7,NDVMN4
                MOV    A,#08H
                MUL    AB
                MOV    B,A
      NDVMN5   :MOV    A,R3
                MOV    R0,A
                MOV    R7,M
                CLR    C
      NDVMN6   :MOV    A,@R0
                RLC    A
                MOV    @R0,A
                INC    R0
                DJNZ   R7,NDVMN6
                MOV    F0,C
                MOV    A,R4
                MOV    R0,A
                MOV    A,R5
                MOV    R1,A
                MOV    R7,N
                CLR    C
      NDVMN7   :MOV    A,@R0
                SUBB   A,@R1
                MOV    @R0,A
                INC    R0
                INC    R1
                DJNZ   R7,NDVMN7
                JB     F0,NDVMNB
                JC     NDVMN8
      NDVMNB   :MOV    A,R3
                MOV    R0,A
                INC    @R0
                SJMP   NDVMNA
      NDVMN8   :MOV    R7,N
                MOV    A,R4
                MOV    R0,A
                MOV    A,R5
                MOV    R1,A
                CLR    C
      NDVMN9   :MOV    A,@R0
                ADDC   A,@R1
                MOV    @R0,A
                INC    R0
                INC    R1
                DJNZ   R7,NDVMN9
      NDVMNA   :DJNZ   B,NDVMN5
                MOV    A,M
                CLR    C
                SUBB   A,N
                ADD    A,R3
                MOV    R1,A
                MOV    A,R2
                MOV    @R1,A
                MOV    A,R3
                MOV    R0,A
                RET
      ;N字節數據左移程序 RLC([R0])=(CF[R0])
      ;入口    :R0,R7
      ;占用資源:ACC,B
      ;堆棧需求:2字節
      ;出口    :R0,CF
      NRLCN    :MOV    B,R0
                CLR    C
      NRLN1    :MOV    A,@R0
                RLC    A
                MOV    @R0,A
                INC    R0
                DJNZ   R7,NRLN1
                MOV    R0,B
                RET
      ;原碼有符號雙字節減法程序 (R3R4-R6R7)=R3R4
      ;入口    :R3,R4,R6,R7
      ;占用資源:ACC,DADD
      ;堆棧需求:6字節
      ;出口    :R3,R4,OV
      DSUB     :MOV    A,R6
                CPL    ACC.7
                MOV    R6,A
                LCALL  DADD
                RET
      ;原碼有符號雙字節加法程序 (R3R4+R6R7)=R3R4
      ;入口    :R3,R4,R6,R7
      ;占用資源:ACC,SR0,NADD,NSUB,CMPT
      ;堆棧需求:4字節
      ;出口    :R3,R4,OV
      DADD     :MOV    A,R3
                MOV    C,ACC.7
                MOV    SR0,C
                XRL    A,R6
                MOV    C,ACC.7
                MOV    A,R3
                CLR    ACC.7
                MOV    R3,A
                MOV    A,R6
                CLR    ACC.7
                MOV    R6,A
                JC     DAB2
                LCALL  NADD
                MOV    A,R3
                JB     ACC.7,DABE
      DAB1     :MOV    C,SR0
                MOV    ACC.7,C
                MOV    R3,A
                CLR    OV
                RET
      DABE     :SETB   OV
                RET
      DAB2     :LCALL  NSUB
                MOV    A,R3
                JNB    ACC.7,DAB1
                LCALL  CMPT
                CPL    SR0
                SJMP   DAB1
      ;原碼有符號雙字節乘法程序 (R3R4*R6R7)=(R5R2R3R4)
      ;入口    :R3,R4,R6,R7
      ;占用資源:ACC,SR0,NMUL22
      ;堆棧需求:4字節
      ;出口    :R5,R2,R3,R4
      IMUL     :MOV    A,R3
                XRL    A,R6
                MOV    C,ACC.7
                MOV    SR0,C
                MOV    A,R3
                CLR    ACC.7
                MOV    R3,A
                MOV    A,R6
                CLR    ACC.7
                MOV    R6,A
                LCALL  NMUL22
                MOV    A,R5
                MOV    C,SR0
                MOV    ACC.7,C
                MOV    R5,A
                RET
      ;原碼有符號雙字節除法程序 (R5R2R3R4/R6R7)=(R3R4) 余數(R6R7)
      ;入口    :R5,R2,R3,R4
      ;占用資源:ACC,SR0,NDIV42
      ;堆棧需求:6字節
      ;出口    :R3,R4,R6,R7,OV
      IDIV     :MOV    A,R5
                XRL    A,R6
                MOV    C,ACC.7
                MOV    SR0,C
                MOV    A,R5
                CLR    ACC.7
                MOV    R5,A
                MOV    A,R6
                CLR    ACC.7
                MOV    R6,A
                LCALL  NDIV42
                MOV    A,R3
                JB     ACC.7,IDIVE
                JB     OV,IDIVE
                MOV    C,SR0
                MOV    ACC.7,C
                MOV    R3,A
                RET
      IDIVE    :SETB   OV
                RET
       
      ;單字節順序查找程序
      ;入口    :R0,R1,A,R7
      ;占用資源:B
      ;堆棧需求:2字節
      ;出口    :R0,R1,A
      FINDB1   :MOV    B,A
                MOV    DPL,R1
                MOV    DPH,R0
      FINDB11  :MOVX   A,@DPTR
                CJNE   A,B,FINDB12
                MOV    R1,DPL
                MOV    R0,DPH
                CLR    A
                RET
      FINDB12  :INC    DPTR
                DJNZ   R7,FINDB11
                MOV    A,#0FFH
                RET
      ;單字節順序查找程序
      ;入口    :R0,R1,A,R6,R7
      ;占用資源:B
      ;堆棧需求:2字節
      ;出口    :R0,R1,A
      FINDB2   :MOV    B,A
                MOV    DPL,R1
                MOV    DPH,R0
                MOV    A,R7
                JZ     FINDB21
                INC    R6
      FINDB21  :MOVX   A,@DPTR
                CJNE   A,B,FINDB22
                MOV    R1,DPL
                MOV    R0,DPH
                CLR    A
                RET
      FINDB22  :INC    DPTR
                DJNZ   R7,FINDB21
                DJNZ   R6,FINDB21
                MOV    A,#0FFH
                RET
      ;雙字節字符串順序查找程序
      ;入口    :R0,R1,R3,R4,R7
      ;占用資源:ACC,B
      ;堆棧需求:2字節
      ;出口    :R0,R1,A
      FINDS1   :MOV    DPL,R1
                MOV    DPH,R0
      FINDS11  :MOVX   A,@DPTR
                INC    DPTR
                CLR    C
                SUBB   A,R4
                JNZ    FINDS12
                MOVX   A,@DPTR
                SUBB   A,R3
                JNZ    FINDS12
                MOV    A,DPL
                CLR    C
                SUBB   A,#01H
                MOV    R1,A
                MOV    A,DPH
                SUBB   A,#00H
                MOV    R0,A
                CLR    A
                RET
      FINDS12  :DJNZ   R7,FINDS11
                MOV    A,#0FFH
                RET
      ;雙字節字符串順序查找程序
      ;入口    :R0,R1,R3,R4,R6,R7
      ;占用資源:ACC,B
      ;堆棧需求:2字節
      ;出口    :R0,R1,A
      FINDS2   :MOV    DPL,R1
                MOV    DPH,R0
                MOV    A,R7
                JZ     FINDS21
                INC    R6
      FINDS21  :MOVX   A,@DPTR
                INC    DPTR
                CLR    C
                SUBB   A,R4
                JNZ    FINDS22
                MOVX   A,@DPTR
                SUBB   A,R3
                JNZ    FINDS22
                MOV    A,DPL
                CLR    C
                SUBB   A,#01H
                MOV    R1,A
                MOV    A,DPH
                SUBB   A,#00H
                MOV    R0,A
                CLR    A
                RET
      FINDS22  :DJNZ   R7,FINDS21
                DJNZ   R6,FINDS21
                MOV    A,#0FFH
                RET
      ;N字節字符串順序查找程序
      ;入口    :ADDPH,ADDPL,R0,R6,R7,N
      ;占用資源:ACC,B,R2,NCNT
      ;堆棧需求:2字節
      ;出口    :ADDPH,ADDPL,A
      FINDN    :MOV    A,R0
                MOV    R2,A
                MOV    A,ADDPL
                MOV    DPL,A
                MOV    A,ADDPH
                MOV    DPH,A
                MOV    A,R7
                JZ     FINDN1
                INC    R6
      FINDN1   :MOV    A,R2
                MOV    R0,A
                MOV    A,N
                MOV    NCNT,A
      FINDN2   :MOVX   A,@DPTR
                CLR    C
                SUBB   A,@R0
                JNZ    FINDN3
                INC    DPTR
                INC    R0
                DJNZ   NCNT,FINDN2
                MOV    A,DPL
                CLR    C
                SUBB   A,N
                MOV    ADDPL,A
                MOV    A,DPH
                SUBB   A,#00H
                MOV    ADDPH,A
                CLR    A
                RET
      FINDN3   :CLR    C
                MOV    A,R0
                SUBB   A,R2
                JNZ    FINDN4
                INC    DPTR
      FINDN4   :DJNZ   R7,FINDN1
                DJNZ   R6,FINDN1
                MOV    A,#0FFH
                RET
      ;單字節最值查找程序
      ;入口    :R0,R1,R6,R7
      ;占用資源:ACC,B
      ;堆棧需求:2字節
      ;出口    :R0(最大值),R1(最小值),R2,R3,R4,R5
      FMAMIB   :MOV    DPL,R1
                MOV    DPH,R0
                MOVX   A,@DPTR
                MOV    R0,A
                MOV    R1,A
                MOV    A,DPL
                MOV    R3,A
                MOV    R5,A
                MOV    A,DPH
                MOV    R2,A
                MOV    R4,A
                MOV    A,R7
                JZ     FMMB1
                INC    R6
      FMMB1    :MOVX   A,@DPTR
                MOV    B,A
                SETB   C
                SUBB   A,R0
                JC     FMMB2
                MOV    R0,B
                MOV    R3,DPL
                MOV    R2,DPH
                SJMP   FMMB3
      FMMB2    :MOV    A,B
                CLR    C
                SUBB   A,R1
                JNC    FMMB3
                MOV    R1,B
                MOV    R5,DPL
                MOV    R4,DPH
      FMMB3    :INC    DPTR
                DJNZ   R7,FMMB1
                DJNZ   R6,FMMB1
                RET
      ;浮點數順序查找程序
      ;入口    :R0,R1,R2,R3,R4,R6,R7
      ;占用資源:B,NCNT,FCMP
      ;堆棧需求:2字節
      ;出口    :R0,R1,A
      FINDF    :MOV    DPL,R1
                MOV    DPH,R0
                MOV    A,R7
                MOV    B,A
                MOV    NCNT,R6
                JZ     FINDF1
                INC    NCNT
      FINDF1   :MOVX   A,@DPTR
                INC    DPTR
                MOV    R5,A
                MOVX   A,@DPTR
                INC    DPTR
                MOV    R6,A
                MOVX   A,@DPTR
                INC    DPTR
                MOV    R7,A
                LCALL  FCMP
                JNZ    FINDF2
                MOV    A,DPL
                CLR    C
                SUBB   A,#03H
                MOV    R1,A
                MOV    A,DPH
                SUBB   A,#00H
                MOV    R0,A
                CLR    A
                RET
      FINDF2   :DJNZ   B,FINDF1
                DJNZ   NCNT,FINDF1
                MOV    A,#0FFH
                RET
      ;浮點數最值查找程序
      ;入口    :ADDPH,ADDPL,R6,R7
      ;占用資源:ACC,B,NCNT,ITEMOV,EBMOV,MOVB,MOVR1,FCMP
      ;堆棧需求:5字節
      ;出口    :[R0](最大值),[R1](最小值),R2,R3,R4,R5
      FMAMIF   :MOV    A,ADDPL
                MOV    R3,A
                MOV    R5,A
                MOV    DPL,A
                MOV    A,ADDPH
                MOV    R2,A
                MOV    R4,A
                MOV    DPH,A
                MOV    B,R7
                MOV    R7,#03H
                LCALL  ITEMOV
                MOV    R7,#03H
                LCALL  IBMOV
                MOV    A,B
                JZ     FMMF1
                INC    NCNT
      FMMF1    :PUSH   B
                MOVX   A,@DPTR
                INC    DPTR
                MOV    R2,A
                MOVX   A,@DPTR
                INC    DPTR
                MOV    R3,A
                MOVX   A,@DPTR
                INC    DPTR
                MOV    R4,A
                LCALL  MOVR1
                LCALL  FCMP
                JNC    FMMF2
                MOV    A,R0
                XCH    A,R1
                MOV    R0,A
                LCALL  MOVB
                MOV    R5,DPL
                MOV    R4,DPH
                MOV    A,R0
                XCH    A,R1
                MOV    R0,A
                SJMP   FMMF3
      FMMF2    :MOV    A,R0
                XCH    A,R1
                MOV    R0,A
                LCALL  MOVR1
                LCALL  FCMP
                MOV    A,R0
                XCH    A,R1
                MOV    R0,A
                JZ     FMMF3
                JC     FMMF3
                LCALL  MOVB
                MOV    R3,DPL
                MOV    R2,DPH
      FMMF3    :POP    B
                DJNZ   B,FMMF1
                DJNZ   NCNT,FMMF1
                RET

      ;單字節折半查找程序
      ;入口    :A,R0,R1,R6,R7
      ;占用資源:B,R2
      ;堆棧需求:2字節
      ;出口    :R0,R1
      SEARCHB  :MOV    B,A
                MOV    A,R1
                ADD    A,R7
                MOV    R7,A
                MOV    A,R0
                ADDC   A,R6
                MOV    R6,A
                MOV    A,R7
                SUBB   A,#01H
                MOV    R7,A
                JNC    SECH1
                DEC    R6
      SECH1    :MOV    A,R7
                CLR    C
                SUBB   A,R1
                MOV    A,R6
                SUBB   A,R0
                JNC    SECH2
                MOV    A,#0FFH
                RET
      SECH2    :MOV    A,R7
                ADD    A,R1
                MOV    R2,A
                MOV    A,R6
                ADDC   A,R0
                RRC    A
                MOV    DPH,A
                MOV    A,R2
                RRC    A
                MOV    DPL,A
                MOVX   A,@DPTR
                CLR    C
                SUBB   A,B
                JNC    SECH3
                INC    DPTR
                MOV    R0,DPH
                MOV    R1,DPL
                SJMP   SECH1
      SECH3    :JZ     SECH5
                MOV    A,DPL
                SUBB   A,#01H
                MOV    R7,A
                JNC    SECH4
                MOV    R6,DPH
                DEC    R6
      SECH4    :SJMP   SECH1
      SECH5    :MOV    R0,DPH
                MOV    R1,DPL
                CLR    A
                RET

      Tags:單片機編程,單片機匯編語言,語法  
      責任編輯:admin
      相關文章列表
      沒有相關文章
      請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
      1分 2分 3分 4分 5分

      還可以輸入 200 個字
      [ 查看全部 ] 網友評論
      關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 狠狠色成人综合首页| 麻豆精品一区二区综合av| 亚洲国产成人五月综合网| 精品国产国产综合精品 | 伊人婷婷综合缴情亚洲五月| 激情五月综合综合久久69| 97se亚洲综合在线| 国产成人精品综合在线观看| 97久久久精品综合88久久| 国产精品综合久成人| 色悠久久久久综合网香蕉| 亚洲国产精品综合久久久| 色综合合久久天天给综看| 亚洲综合无码一区二区三区| 热久久综合这里只有精品电影| 亚洲情综合五月天| 亚洲伊人久久成综合人影院| 色综合久久一本首久久| 狠狠色丁香久久婷婷综合_中 | 亚洲综合另类小说色区| 亚洲综合av一区二区三区 | 亚洲精品国产综合久久一线| 国产色丁香久久综合| 亚洲狠狠久久综合一区77777| 99久久国产综合精品女同图片| 综合欧美五月丁香五月| 色综合久久精品中文字幕首页 | 久久综合久综合久久鬼色| 亚洲婷婷五月综合狠狠爱| 国产色婷婷精品综合在线 | 亚洲欧洲日韩国产综合在线二区| 色综合天天综合网| 天天爱天天做色综合| 欧洲97色综合成人网| 狠狠色综合久久婷婷色天使| 狠狠色丁香婷婷综合潮喷| 国产成人综合亚洲亚洲国产第一页| 亚洲国产成人久久综合碰 | 亚洲综合自拍成人| 亚洲成AV人综合在线观看| 久久五月天综合网|