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

📄 51 single-chip integrated assembler.txt

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

⌨️ 快捷键说明

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