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