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

📄 51 single-chip integrated assembler.txt

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

⌨️ 快捷键说明

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