⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 51 single-chip integrated assembler.txt

📁 包含了C51单片机编程中常用的源程序
💻 TXT
📖 第 1 页 / 共 4 页
字号:
                  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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -