欧美午夜欧美,台湾成人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一区,最近看过的日韩成人
91香蕉视频污在线| 国产女人18毛片水真多成人如厕| 精品人在线二区三区| 自拍偷拍国产精品| 麻豆久久一区二区| 一本高清dvd不卡在线观看| 日韩欧美成人激情| 一区二区欧美精品| 成人综合婷婷国产精品久久免费| 欧美精品免费视频| 一区二区三区免费网站| 成人污污视频在线观看| 日韩美女天天操| 午夜精品福利一区二区蜜股av| 国产成人丝袜美腿| 精品国产一区二区三区四区四| 亚洲一区在线看| 色综合视频在线观看| 国产精品国产三级国产专播品爱网| 久久国产欧美日韩精品| 日韩一区国产二区欧美三区| 国产成人综合亚洲91猫咪| 欧美日韩aaaaa| 亚洲成av人片一区二区| 在线观看国产91| 亚洲欧美乱综合| 91欧美一区二区| 中文字幕一区二区三区乱码在线| 国产不卡免费视频| 欧美国产在线观看| 粉嫩嫩av羞羞动漫久久久| 久久久久久久久久久久电影| 亚洲天堂av老司机| 在线免费不卡电影| 自拍偷在线精品自拍偷无码专区| 国产成人av一区| 国产欧美一区二区三区沐欲| 国产盗摄一区二区| 国产精品人成在线观看免费| 成人激情文学综合网| 亚洲日本在线a| 日本丰满少妇一区二区三区| 亚洲在线观看免费视频| 欧美色网一区二区| 免费欧美高清视频| 久久久久久毛片| 99国产精品久久久久久久久久| 亚洲日本免费电影| 欧美人与性动xxxx| 国产精品亚洲а∨天堂免在线| 国产精品网站在线| 色综合久久综合| 婷婷综合久久一区二区三区| 精品乱人伦小说| 国产电影精品久久禁18| 中文字幕一区二区三区不卡| 欧美日韩在线直播| 久久精品国产色蜜蜜麻豆| 国产精品视频免费看| 欧美午夜一区二区三区| 美女www一区二区| 中文字幕巨乱亚洲| 欧美丝袜丝交足nylons| 韩国欧美国产一区| 一区二区三区日韩在线观看| 精品美女被调教视频大全网站| 91在线国产福利| 蜜桃精品在线观看| 亚洲人成电影网站色mp4| 日韩欧美亚洲一区二区| 成人精品视频.| 美女一区二区久久| 亚洲欧美另类小说| 精品美女一区二区| 91行情网站电视在线观看高清版| 激情伊人五月天久久综合| 亚洲精品大片www| 久久久久99精品国产片| 欧美午夜不卡视频| 国产91精品入口| 欧美aⅴ一区二区三区视频| 18成人在线视频| 国产亚洲欧美一区在线观看| 欧美日韩精品系列| 91美女片黄在线观看91美女| 精品一二线国产| 视频一区视频二区中文字幕| 亚洲人成人一区二区在线观看| 精品乱人伦一区二区三区| 欧美丝袜自拍制服另类| 91色乱码一区二区三区| 粉嫩aⅴ一区二区三区四区| 全部av―极品视觉盛宴亚洲| 亚洲高清免费在线| 一区二区欧美精品| 亚洲欧洲制服丝袜| 中文字幕一区不卡| 国产精品久久久久影视| 久久人人超碰精品| 精品国产3级a| www一区二区| 精品免费日韩av| 欧美一区二区三区日韩视频| 欧美人妖巨大在线| 91.麻豆视频| 欧美精品18+| 666欧美在线视频| 欧美一级艳片视频免费观看| 欧美精品一级二级三级| 制服丝袜一区二区三区| 欧美日韩成人综合天天影院| 欧美日韩大陆在线| 欧美年轻男男videosbes| 欧美日韩在线直播| 51精品久久久久久久蜜臀| 8v天堂国产在线一区二区| 欧美一级视频精品观看| 日韩免费高清av| 久久久久97国产精华液好用吗 | 亚洲午夜久久久久久久久电影院| 亚洲欧美日韩精品久久久久| 亚洲精品美国一| 亚洲不卡一区二区三区| 强制捆绑调教一区二区| 久久成人免费网| 国产伦精品一区二区三区免费| 国内成+人亚洲+欧美+综合在线| 国产福利一区二区三区视频| 成人午夜激情影院| 欧美网站一区二区| 亚洲高清免费在线| 久久久噜噜噜久噜久久综合| 欧美一区二区国产| 欧美日韩另类国产亚洲欧美一级| 不卡一卡二卡三乱码免费网站| www.成人网.com| 久久精品国产99久久6| 日韩经典一区二区| 日韩电影在线免费观看| 亚洲一区二区黄色| 亚洲小说欧美激情另类| 亚洲精品水蜜桃| 国产精品久久久爽爽爽麻豆色哟哟| 国产尤物一区二区| 国产在线乱码一区二区三区| 9i看片成人免费高清| 欧美视频一区在线| 久久综合给合久久狠狠狠97色69| 国产精品久久久久影视| 麻豆视频一区二区| 99久久精品免费看国产免费软件| 56国语精品自产拍在线观看| 日本一区二区三区国色天香| 亚洲国产aⅴ天堂久久| 国产成人亚洲综合a∨猫咪| 在线观看视频一区二区| 国产性做久久久久久| 日韩高清一级片| 91美女在线观看| 欧美激情一区二区三区四区 | 欧美性生活影院| 久久影院午夜论| 日韩福利电影在线观看| 色先锋久久av资源部| 久久九九99视频| 美女视频黄久久| 欧美日韩高清不卡| 中文字幕一区二区三区不卡在线| 国内精品不卡在线| 日韩欧美一区二区久久婷婷| 亚洲制服丝袜av| 色综合天天综合狠狠| 国产日产精品1区| 久久精品国产网站| 欧美一级精品在线| 三级欧美韩日大片在线看| 91麻豆精品秘密| 国产精品的网站| 成人午夜在线免费| 久久精品在线观看| 免费观看在线综合色| 欧美日本一区二区| 亚瑟在线精品视频| 在线精品视频免费播放| 亚洲黄色免费电影| 91高清在线观看| 一区二区三区不卡在线观看| 色av一区二区| 亚洲乱码国产乱码精品精的特点| 91原创在线视频| |精品福利一区二区三区| 成人国产一区二区三区精品| 国产精品蜜臀av| av高清不卡在线| 日韩理论电影院| 欧美中文字幕一区二区三区亚洲| 综合亚洲深深色噜噜狠狠网站| 91在线免费看| 亚洲午夜精品17c| 91精品国产综合久久久蜜臀粉嫩|