欧美午夜欧美,台湾成人av,久久av一区,最近看过的日韩成人

電子開發網

電子開發網電子設計 | 電子開發網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,久久av一区,最近看过的日韩成人
欧美日韩一区二区三区视频| 欧美成人vps| 日韩一区二区三区电影 | 1024亚洲合集| 捆绑紧缚一区二区三区视频| 99精品视频在线播放观看| 精品国产制服丝袜高跟| 午夜国产精品一区| 一本在线高清不卡dvd| www一区二区| 日韩黄色小视频| 欧美亚洲国产一区在线观看网站| 国产精品久久毛片av大全日韩| 精品亚洲成a人在线观看| 欧美精品第一页| 有坂深雪av一区二区精品| 成人黄色大片在线观看| 久久老女人爱爱| 精品一区二区三区在线播放| 日韩一区国产二区欧美三区| 免费观看日韩av| 欧美一区在线视频| 午夜激情久久久| 在线综合亚洲欧美在线视频| 五月婷婷综合网| 欧美日韩一级二级三级| 五月婷婷色综合| 制服.丝袜.亚洲.中文.综合 | 亚洲男同1069视频| 91在线观看污| 亚洲免费观看在线视频| 欧洲精品在线观看| 亚洲综合免费观看高清完整版| 色欧美片视频在线观看| 一二三区精品福利视频| 欧美日韩中文国产| 天堂一区二区在线| 日韩精品中文字幕在线一区| 激情小说亚洲一区| 国产精品女人毛片| 91免费国产在线观看| 亚洲成人av电影| 欧美一区二区在线播放| 黄一区二区三区| 亚洲国产精品国自产拍av| 一本一道波多野结衣一区二区| 亚洲免费资源在线播放| 欧美麻豆精品久久久久久| 九九精品一区二区| 久久精品日韩一区二区三区| 99久久精品免费看国产| 日本一区二区三区国色天香| 在线视频中文字幕一区二区| 亚洲国产综合人成综合网站| 日韩视频一区二区三区在线播放| 国产一区二区免费看| 亚洲色图视频网站| 日韩一区二区三区视频在线观看| 国产成人亚洲精品青草天美| 亚洲欧美日韩国产另类专区| 欧美一级日韩不卡播放免费| 成人一区二区三区视频| 污片在线观看一区二区| 国产精品乱码久久久久久| 精品视频1区2区| 豆国产96在线|亚洲| 日韩精品三区四区| 国产精品视频你懂的| 欧美福利视频导航| 成人av动漫网站| 日韩激情中文字幕| 亚洲特级片在线| 日韩精品一区二| 欧美亚洲综合在线| 白白色亚洲国产精品| 日本vs亚洲vs韩国一区三区二区| 日本一区二区在线不卡| 日韩一级片网址| 日本黄色一区二区| 国产精品亚洲视频| 日韩二区三区在线观看| 亚洲美女少妇撒尿| 国产日韩v精品一区二区| 91麻豆精品国产自产在线观看一区 | 亚洲一区二区欧美激情| 国产午夜亚洲精品羞羞网站| 日韩一区二区三区在线| 欧美在线一区二区| 色综合一个色综合| 成人动漫一区二区三区| 激情综合色丁香一区二区| 亚洲丰满少妇videoshd| 一区二区三区 在线观看视频| 国产精品视频免费| 国产网站一区二区| 久久综合999| 日韩欧美一级片| 欧美一区二区三区啪啪| 欧美日精品一区视频| 色老头久久综合| 91美女片黄在线| 岛国精品一区二区| 从欧美一区二区三区| 国产精品一色哟哟哟| 久久国产精品一区二区| 人人超碰91尤物精品国产| 天堂av在线一区| 日韩黄色免费网站| 日本欧美大码aⅴ在线播放| 日韩高清不卡在线| 奇米亚洲午夜久久精品| 奇米色一区二区| 久久99精品国产| 国产露脸91国语对白| 国产精品一二二区| 福利视频网站一区二区三区| 99久久伊人久久99| 91在线云播放| 欧美日韩精品一区二区三区四区| 欧美特级限制片免费在线观看| 欧美日韩国产三级| 日韩午夜激情视频| 久久久夜色精品亚洲| 亚洲欧洲av一区二区三区久久| 亚洲色欲色欲www| 亚洲午夜一区二区| 奇米四色…亚洲| 国产精品99久| 91黄色免费版| 精品女同一区二区| 国产欧美精品国产国产专区 | 韩国精品主播一区二区在线观看| 国产精品一区二区三区99| 丁香婷婷综合五月| 在线观看国产91| 日韩三级.com| 中文字幕 久热精品 视频在线 | 日韩一区二区视频在线观看| 国产欧美综合色| 一卡二卡三卡日韩欧美| 久久er精品视频| 99国产精品久久久久久久久久 | 福利一区在线观看| 欧美日韩亚洲综合一区二区三区| 欧美一区二区三级| 亚洲人成亚洲人成在线观看图片| 天天操天天色综合| 成人午夜看片网址| 欧美一区二区日韩一区二区| 亚洲欧美一区二区视频| 首页综合国产亚洲丝袜| 成人性生交大片免费看中文网站| 在线看日本不卡| 国产亚洲女人久久久久毛片| 午夜精品视频在线观看| 丁香六月久久综合狠狠色| 67194成人在线观看| 亚洲视频小说图片| 国产一区二区在线视频| 欧美日韩国产美| 国产精品久久久久久福利一牛影视 | 高清久久久久久| 91精品国产一区二区三区香蕉| 1区2区3区精品视频| 国产一区二区0| 91精品国产综合久久精品图片| 国产精品理伦片| 国产精品亚洲а∨天堂免在线| 欧美一区二区三区的| 樱花草国产18久久久久| 成人av网址在线| 久久久高清一区二区三区| 午夜精品福利一区二区三区蜜桃| 色综合欧美在线视频区| 国产精品美女久久福利网站| 国产福利视频一区二区三区| 欧美一区国产二区| 天堂在线亚洲视频| 在线欧美日韩国产| 亚洲视频免费在线观看| av在线这里只有精品| 国产精品女主播av| 国产aⅴ综合色| 久久蜜桃av一区二区天堂 | 7777精品伊人久久久大香线蕉的 | 激情综合一区二区三区| 欧美理论片在线| 偷拍日韩校园综合在线| 欧美久久婷婷综合色| 日韩中文字幕不卡| 56国语精品自产拍在线观看| 婷婷丁香激情综合| 欧美一区二区三区色| 日韩高清一级片| 日韩精品中文字幕在线不卡尤物 | 日韩欧美另类在线| 久久国产婷婷国产香蕉| 久久久综合激的五月天| 成人精品鲁一区一区二区| 亚洲天堂a在线|