51單片機(jī)的高精度除法程序及使用
開發(fā)人員在開發(fā)51單片機(jī)應(yīng)用系統(tǒng)過程中,往往遇到多字節(jié)除法及倒數(shù)問題。但目前一些資料中所介紹的有關(guān)程序,復(fù)雜且功能單一、精度低。本人在研制((GZ93多功能程控測試儀》過程中,自行設(shè)計(jì)的4字節(jié)除4字節(jié)程序具有功能多、精度高、簡短、運(yùn)行速度快等特點(diǎn),可用于求4字節(jié)倒數(shù),求商的整數(shù)(結(jié)果為4字節(jié)),求商的小數(shù)部分(結(jié)果為4字節(jié)),調(diào)用兩次即可求8字節(jié)商。
一、使用方法
1.求商的整數(shù)
(1)16進(jìn)制被除數(shù)送51內(nèi)部RAM中20(低位)至23(高位)單元,除數(shù)送50(低位)至53(高位)單元,擴(kuò)充單元24至27清零。 ’
(2)調(diào)子程序DIV。
(3)20(低位)至23(商位)單元為所求商,24至27單元為余數(shù)。
2.求八字節(jié)商
(1)先求商的整數(shù)部分
方法同上,然后將20至23單元的整數(shù)商送其它單元保存。
(2)求商的小數(shù)部分
20至23單元清零;其余單元內(nèi)容不變;調(diào)DIV子程序;小數(shù)商在23至20單元中,小數(shù)點(diǎn)位于23單元
前。
3.求倒數(shù)
(1)20至23單元及25至27單元清零,01H送24單元,除數(shù)送50(低位)至53(高位)單元。
(2)調(diào)子程序DIV。
(3)倒數(shù)在23至20單元,小數(shù)點(diǎn)位于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
CLRC
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
評論