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

📄 51

📁 8051的一些算法
💻
📖 第 1 页 / 共 2 页
字号:
;PSW,A,R2,R3,R4,2FH.7;6
FINT:   LCALL MOVR0
        LCALL INT
        LJMP MOV0
INT:    MOV A,R3
        ORL A,R4
        JNZ INTA
        MOV R2,A
        RET
INTA:   MOV A,R2
        JZ INTB
        JB ACC.7,INTB
        CLR C
        SUBB A,#10H
        JC INTC
        RET
INTB:   CLR A
        MOV R4,A
        MOV C,2FH.7
        RRC A
        MOV R3,A
        RL A
        MOV R2,A
        RET
INTC:   CLR F0
INTD:   CLR C
        LCALL RR1
        ORL C,F0
        MOV F0,C
        CJNE R2,#16,INTD
        JNB F0,INTE
        JNB 2FH.7,INTE
        INC R4
        MOV A,R4
        JNZ INTE
        INC R3
INTE:   LJMP RLN
;11
;1/F[R0]=R0,OV
;PSW,A,B,R2-R7,2FH.0.7;5
FRCP:   MOV A,@R0
        MOV C,ACC.7
        MOV 2FH.7,C
        MOV C,ACC.6
        MOV ACC.7,C
        MOV R5,A
        INC R0
        MOV A,@R0
        JNZ RCP
        DEC R0
        SETB OV
        RET
RCP:    MOV R6,A
        INC R0
        MOV A,@R0
        MOV R7,A
        DEC R0
        DEC R0
        MOV R2,#1
        MOV R3,#80H
        MOV R4,#0
        LJMP DIV3
;12
;LogF[R0]=[R0],OV
;PSW,A,B,R2-R7,2FH.0.7;9
FLOG:   LCALL FLN
        JNB OV,LOG
        RET
LOG:    MOV R5,#0FFH
        MOV R6,#0DEH
        MOV R7,#5CH
        LCALL MUL1
        LJMP MOV0
;13
;LnF[R0]=[R0],OV
;PSW,A,B,R2-R7,2FH.0.7;7
FLN:    LCALL MOVR0
        JB 2FH.7,LNOV
        MOV A,R3
        JNZ LN0
LNOV:   SETB OV
        RET
LN0:    CLR C
        LCALL RL1
        CLR A
        XCH A,R2
        PUSH ACC
        LCALL RLN
        LCALL MOV0
        LCALL FPLN
        DB 7BH,0F4H,30H
        DB 0FEH,85H,13H
        DB 7FH,91H,51H
        DB 0FFH,0FAH,0BAH
        DB 0,0FFH,0CAH
        DB 70H,0C0H,0
        DB 40H
        POP ACC
        JNZ LN1
        RET
LN1:    CLR 2FH.0
        MOV C,ACC.7
        MOV F0,C
        JNC LN2
        CPL A
        INC A
LN2:    MOV R2,A
        MOV B,#72H
        MUL AB
        XCH A,R2
        MOV R7,B
        MOV B,#0B1H
        MUL AB
        ADD A,R7
        MOV R7,A
        CLR A
        ADDC A,B
        MOV R6,A
        MOV R5,#8
LN3:    JB ACC.7,LN4
        MOV A,R2
        RLC A
        MOV R2,A
        MOV A,R7
        RLC A
        MOV R7,A
        MOV A,R6
        RLC A
        MOV R6,A
        DEC R5
        SJMP LN3
LN4:    MOV C,F0
        MOV ACC.7,C
        LJMP ASN
;14
;10`[R0]=[R0],OV
;PSW,A,B,R2-R7,2FH.0.7;6
FEXP10: MOV R5,#2
        MOV R6,#0D4H
        MOV R7,#9AH
        SJMP EXP
;15
;e`[R0]=[R0],OV
;PSW,A,B,R2-R7,2FH.0.7;6
FEXP:   MOV R5,#1
        MOV R6,#0B8H
        MOV R7,#0ABH
EXP:    CLR 2FH.0
        LCALL MOVR0
        LCALL MUL1
        SJMP EXP20
;16
;2`[R0]=[R0],OV
;PSW,A,B,R2-R7,2FH.0.7;6
FEXP2:  LCALL MOVR0
EXP20:  MOV A,R3
        JZ EXP1
        MOV A,R2
        JB ACC.7,EXP2
        SETB C
        SUBB A,#6
        JC EXP2
        JB 2FH.7,EXP0
        MOV @R0,#3FH
        INC R0
        MOV @R0,#0FFH
        INC R0
        MOV @R0,#0FFH
        DEC R0
        DEC R0
        SETB OV
        RET
EXP0:   CLR A
        MOV @R0,A
        INC R0
        MOV @R0,A
        INC R0
        MOV @R0,A
        DEC R0
        DEC R0
        CLR OV
        RET
EXP1:   MOV @R0,#1
        INC R0
        MOV @R0,#80H
        INC R0
        MOV @R0,#0
        DEC R0
        DEC R0
        CLR OV
        RET
EXP2:   MOV A,R2
        MOV R5,A
        MOV A,R3
        MOV R6,A
        MOV A,R4
        MOV R7,A
        MOV C,2FH.7
        MOV 2FH.0,C
        LCALL INT
        MOV A,R3
        JZ EXP4
EXP3:   CLR C
        RR A
        INC R2
        CJNE R2,#8,EXP3
EXP4:   MOV R3,A
        JNB 2FH.7,EXP5
        CPL A
        INC A
EXP5:   PUSH ACC
        LCALL RLN
        CPL 2FH.7
        SETB F0
        LCALL AS1
        LCALL MOV0
        LCALL FPLN
        DB 77H,0B1H,0C9H
        DB 7AH,0A1H,68H
        DB 7CH,0E3H,4FH
        DB 7EH,0F5H,0E7H
        DB 0,0B1H,72H
        DB 1,80H,0
        DB 40H
        POP ACC
        ADD A,R2
        MOV R2,A
        CLR 2FH.7
        LJMP MOV0
;17
;COSF[R0]=[R0]
;PSW,A,B,R2-R7,2FH.0.6.7;6
FCOS:   LCALL FABS
        MOV R5,#1
        MOV R6,#0C9H
        MOV R7,#10H
        CLR 2FH.0
        LCALL MOVR0
        CLR F0
        LCALL AS1
        LCALL MOV0
;18
;SINF[R0]=[R0]
;PSW,A,B,R2-R7,2FH.0.6.7;6
FSIN:   MOV A,@R0
        MOV C,ACC.7
        MOV 2FH.6,C
        CLR ACC.7
        MOV @R0,A
        LCALL MOVR0
        MOV R5,#0
        MOV R6,#0A2H
        MOV R7,#0FAH
        CLR 2FH.0
        LCALL MUL1
        MOV A,R2
        MOV R5,A
        MOV A,R3
        MOV R6,A
        MOV A,R4
        MOV R7,A
        LCALL INT
        MOV A,R2
        JZ SIN2
SIN1:   CLR C
        LCALL RR1
        CJNE R2,#16,SIN1
        MOV A,R4
        JNB ACC.1,SIN2
        CPL 2FH.6
SIN2:   JB ACC.0,SIN3
        CPL 2FH.7
        SJMP SIN4
SIN3:   MOV A,R4
        INC A
        MOV R4,A
        JNZ SIN4
        INC R3
SIN4:   LCALL RLN
        SETB F0
        LCALL AS1
        LCALL MOV0
        LCALL FPLN
        DB 7DH,93H,28H
        DB 0,0,0
        DB 80H,0A4H,64H
        DB 0,0,0
        DB 1,0C9H,2
        DB 0,0,0
        DB 40H
        MOV A,@R0
        JZ SIN5
        JB ACC.7,SIN5
        INC R0
        MOV @R0,#80H
        INC R0
        MOV @R0,#0
        DEC R0
        DEC R0
        MOV A,#1
SIN5:   MOV C,2FH.6
        MOV ACC.7,C
        MOV @R0,A
        RET
;19
;arcctgF[R0]=[R0]
;PSW,A,B,R2-R7,2FH.0.5.6;7
FATN:   MOV A,@R0
        MOV C,ACC.7
        MOV 2FH.6,C
        CLR ACC.7
        MOV @R0,A
        CLR 2FH.5
        JB ACC.6,ATN1
        JZ ATN1
        SETB 2FH.5
        LCALL FRCP
ATN1:   LCALL FPLN
        DB 0FCH,0E4H,91H
        DB 7FH,8FH,37H
        DB 0FFH,0EDH,0E0H
        DB 7BH,0E8H,77H
        DB 0,0FFH,68H
        DB 72H,85H,0ECH
        DB 40H
        JNB 2FH.5,ATN2
        CPL 2FH.7
        MOV C,2FH.7
        MOV F0,C
        MOV R5,#1
        MOV R6,#0C9H
        MOV R7,#10H
        LCALL AS1
        LCALL MOV0
ATN2:   MOV A,@R0
        MOV C,2FH.6
        MOV ACC.7,C
        MOV @R0,A
        RET
;24
;fBCD[R0]=F[R0] ;11
BCDTOF: INC R0
        INC R0
        MOV A,@R0
        MOV R7,A
        DEC R0
        MOV A,@R0
        JNZ BTOF0
        DEC R0
        RET
BTOF0:  MOV R6,A
        DEC R0
        MOV A,@R0
        MOV C,ACC.7
        MOV 2FH.6,C
        CLR 2FH.7
        MOV C,ACC.6
        MOV ACC.7,C
        MOV @R0,A
        CLR A
        MOV R4,A
        MOV R3,A
        MOV R2,#16
BTOF1:  MOV A,R7
        ADD A,R7
        DA A
        MOV R7,A
        MOV A,R6
        ADDC A,R6
        DA A
        MOV R6,A
        MOV A,R4
        RLC A
        MOV R4,A
        MOV A,R3
        RLC A
        MOV R3,A
        DEC R2
        JNB ACC.7,BTOF1
        PUSH ACC
        MOV A,R4
        PUSH ACC
        MOV A,R2
        PUSH ACC
        MOV A,@R0
        MOV C,ACC.7
        MOV 2FH.7,C
        JNC BTOF2
        CPL A
        INC A
BTOF2:  MOV R3,A
        MOV R2,#8
        MOV R4,#0
        LCALL RLN
        LCALL MOV0
        LCALL FEXP10
        LCALL MOVR0
        POP ACC
        MOV R5,A
        POP ACC
        MOV R7,A
        POP ACC
        MOV R6,A
        LCALL MUL1
        LCALL MOV0
        MOV C,2FH.6
        MOV ACC.7,C
        MOV @R0,A
        RET
;25
;F[R0]=BCDF[R0]
FTOBCD: INC R0
        MOV A,@R0
        INC R0
        ORL A,@R0
        DEC R0
        DEC R0
        JNZ FTOB0
        MOV @R0,A
        RET
FTOB0:  MOV A,@R0
        MOV C,ACC.7
        MOV 2FH.6,C
        CLR ACC.7
        MOV @R0,A
        LCALL FLOG
        MOV A,R2
        MOV R5,A
        MOV A,R3
        MOV R6,A
        MOV A,R4
        MOV R7,A
        MOV C,2FH.7
        MOV 2FH.0,C
        LCALL INT
        MOV A,R3
        JZ FTOB2
FTOB1:  CLR C
        RRC A
        INC R2
        CJNE R2,#8,FTOB1
FTOB2:  INC A
        MOV R3,A
        MOV R2,#8
        JNB 2FH.7,FTOB3
        DEC A
        DEC A
        MOV R3,A
        CPL A
        INC A
FTOB3:  PUSH ACC
        LCALL RLN
        CPL 2FH.7
        SETB F0
        LCALL AS1
        LCALL MOV0
        LCALL FEXP10
        MOV A,R2
        JZ FTOB5
FTOB4:  CLR C
        LCALL RR1
        CJNE R2,#0,FTOB4
FTOB5:  LCALL MOV0
        POP ACC
        MOV C,2FH.6
        MOV ACC.7,C
        MOV @R0,A
        INC R0
        MOV @R0,#0
        MOV A,R1
        PUSH ACC
        MOV A,R0
        INC A
        MOV R1,A
        MOV @R1,#0
        MOV R2,#4
FTOB6:  MOV A,@R1
        SWAP A
        MOV @R1,A
        CLR A
        XCHD A,@R1
        XCH A,@R0
        SWAP A
        XCHD A,@R0
        MOV @R0,A
        MOV A,R4
        MOV B,#10
        MUL AB
        MOV R4,A
        MOV R5,B
        MOV A,R3
        MOV B,#10
        MUL AB
        ADD A,R5
        MOV R3,A
        CLR A
        ADDC A,B
        XCHD A,@R1
        DJNZ R2,FTOB6
        MOV A,R3
        JNB ACC.7,FTOB7
        MOV A,@R1
        ADD A,#1
        DA A
        MOV @R1,A
        CLR A
        ADDC A,@R0
        DA A
        MOV @R0,A
FTOB7:  POP ACC
        MOV R1,A
        DEC R0
        RET
;26
;HuF[R0]=DuF[R0]
RTOD:   MOV R5,#6
        MOV R6,#0E5H
        MOV R7,#2FH
        SJMP DR
;27
;DuF[R0]=HuF[R0]
DTOR:   MOV R5,#0FBH
        MOV R6,#8EH
        MOV R7,#0FAH
DR:     LCALL MOVR0
        CLR 2FH.0
        LCALL MUL1
        LJMP MOV0

         














⌨️ 快捷键说明

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