51高精度除法程序及使用
2013-02-19
史延龄
标签: 51单片机

科技人员在开发51单片机应用系统过程中,往往遇到多字节除法及倒数问题。但目前一些资料中所介绍的有关程序,复杂且功能单一、精度低。本人在研制((GZ93多功能程控测试仪》过程中,自行设计的4字节除4字节程序具有功能多、精度高、简短、运行速度快等特点,可用于求4字节倒数,求商的整数(结果为4字节),求商的小数部分(结果为4字节),调用两次即可求8字节商。

一、使用方法

1.求商的整数

(1)16进制被除数送51内部RAM中20(低位)至23(高位)单元,除数送50(低位)至53(高位)单元,扩充单元24至27清零。’

(2)调子程序DIV。

(3)20(低位)至23(商位)单元为所求商,24至27单元为余数。

2.求八字节商

(1)先求商的整数部分

方法同上,然后将20至23单元的整数商送其它单元保存。

(2)求商的小数部分

20至23单元清零;其余单元内容不变;调DIV子程序;小数商在23至20单元中,小数点位于23单元

前。

3.求倒数

(1)20至23单元及25至27单元清零,01H送24单元,除数送50(低位)至53(高位)单元。

(2)调子程序DIV。

(3)倒数在23至20单元,小数点位于23单元前。

二、程序清单

        ORG 0500H
DIV:    CLR 7EH
        MOV R0,#50H
        MOV R7,#03H
DV0:    MOV A,@R0
        INC R0
        ORL A,@R0
        JNZ DV1
        DJNZ R7,DV0
        SETB 7EH
        SJMP DV8
DV1:    MOV R6,#20H
        CLR C
DV2:    MOV R0,#20H
        MOV R7,#08H
DV3:    MOV A,@R0
        RLC A
        MOV @R0,A
        INC R0
        DJNZ R7,DV3
        MOV 0F0H,C
        CLR C
        MOV R0,#24H
        MOV R1,#50H
        MOV R7,#04H
DV4:    MOV A,@R0
        SUB A,@R1
        MOV @R0,A
        INC R0
        INC Rl
        DJNZ R7,DV4
        JNB 0F0H,DV5
        CLR C
        SJMP DV6
DV5:    JNC DV6
        MOV A,24H
        ADD A,50H
        MOV 24H,A
        MOV A,25H
        ADDC A,51H
        MOV 25H,A
        MOV A,26H
        ADDC A,52H
        MOV 26H,A
        MOV A,27H
        ADDC A,53H
        MOV 27H,A
DV6:    CPL C
        DJNZ R6,DV2
        MOV R0,#20H
        MOV R7,#04H
DV7:    MOV A,@R0
        RLC A
        MOV @R0,A
        INC R0
        DJNZ R7,DV7
DV8:    RET
        END


可能会用到的工具/仪表
本站简介 | 意见建议 | 免责声明 | 版权声明 | 联系我们
CopyRight@2024-2039 嵌入式资源网
蜀ICP备2021025729号