;只能整數(shù)運算及非0運算
ORG 0000H
JMP A1
ORG 002BH
A1: MOV R0,#04H;被除數(shù)
MOV R1,#0D2H;被除數(shù)
MOV R2,#0;余數(shù)
MOV R3,#0;商
MOV R4,#0;商
MOV R5,#34;除數(shù)
MOV 30H,#16
JMP A1
ORG 002BH
A1: MOV R0,#04H;被除數(shù)
MOV R1,#0D2H;被除數(shù)
MOV R2,#0;余數(shù)
MOV R3,#0;商
MOV R4,#0;商
MOV R5,#34;除數(shù)
MOV 30H,#16
A2: MOV A,R1;先把移低字節(jié)移到高字節(jié)位
RLC A;
MOV R1,A;
RLC A;
MOV R1,A;
MOV A,R0;先處理高字節(jié)和接收低字節(jié)傳上來的位字節(jié)
RLC A;
MOV R0,A;
RLC A;
MOV R0,A;
MOV A,R2;把移出來的數(shù)處理
RLC A;
MOV R2,A;
RLC A;
MOV R2,A;
CLR C;清C因為減法A=A-C-R5
SUBB A,R5;移出來的數(shù)減除數(shù)
JC A3;比較移出來的數(shù)和除數(shù)大小
MOV R2,A;移出來的數(shù)大則商要置1并將余數(shù)賦給R2用于下次移位后再減除數(shù)
;由于除數(shù)為2位16進制數(shù)所以余數(shù)不不超過2位16進制數(shù)用一個寄存器就夠了
A3: CPL C;商處理
MOV A,R4;先把存到低字節(jié)位
RLC A;
MOV R4,A;
JC A3;比較移出來的數(shù)和除數(shù)大小
MOV R2,A;移出來的數(shù)大則商要置1并將余數(shù)賦給R2用于下次移位后再減除數(shù)
;由于除數(shù)為2位16進制數(shù)所以余數(shù)不不超過2位16進制數(shù)用一個寄存器就夠了
A3: CPL C;商處理
MOV A,R4;先把存到低字節(jié)位
RLC A;
MOV R4,A;
MOV A,R3;通過低字節(jié)存到高字節(jié)
RLC A;
MOV R3,A;
RLC A;
MOV R3,A;
DJNZ 30H,A2;
JMP $
JMP $
END
;思路--除數(shù)為2位16進制數(shù)所以余數(shù)不不超過2位16進制數(shù)用一個寄存器就夠了
; --除數(shù)為4位16進制數(shù)就得要用2個寄存器
; R2 R5 R3 R4
;1、 00000000-00100010小于0,商值為00000000》00000000B
;2、 00000000-00100010小于0,商值為00000000》00000000B
;3、 00000000-00100010小于0,商值為00000000》00000000B
;4、 00000000-00100010小于0,商值為00000000》00000000B
;5、 00000000-00100010小于0,商值為00000000》00000000B
;6、 00000001-00100010小于0,商值為00000000》00000000B
;7、 00000010-00100010小于0,商值為00000000》00000000B
;8、 00000100-00100010小于0,商值為00000000》00000000B
;9、 00001001-00100010小于0,商值為00000000》00000000B
;10、00010011-00100010小于0,商值為00000000》00000000B
;11、00100110-00100010大于0,商值為00000000》00000001B;余數(shù)為00000100B賦值給R2
;12、00010010-00100010小于0,商值為00000000》00000010B
;13、00100100-00100010小于0,商值為00000000》00000100B
;14、00100101-00100010大于0,商值為00000000》00001001B;余數(shù)為00000010B賦值給R2
;15、00001010-00100010小于0,商值為00000000》00010010B;
;16、00010100-00100010小于0,商值為00000000》00100100B,余數(shù)為00010100B
;至此算法完成
; --除數(shù)為4位16進制數(shù)就得要用2個寄存器
; R2 R5 R3 R4
;1、 00000000-00100010小于0,商值為00000000》00000000B
;2、 00000000-00100010小于0,商值為00000000》00000000B
;3、 00000000-00100010小于0,商值為00000000》00000000B
;4、 00000000-00100010小于0,商值為00000000》00000000B
;5、 00000000-00100010小于0,商值為00000000》00000000B
;6、 00000001-00100010小于0,商值為00000000》00000000B
;7、 00000010-00100010小于0,商值為00000000》00000000B
;8、 00000100-00100010小于0,商值為00000000》00000000B
;9、 00001001-00100010小于0,商值為00000000》00000000B
;10、00010011-00100010小于0,商值為00000000》00000000B
;11、00100110-00100010大于0,商值為00000000》00000001B;余數(shù)為00000100B賦值給R2
;12、00010010-00100010小于0,商值為00000000》00000010B
;13、00100100-00100010小于0,商值為00000000》00000100B
;14、00100101-00100010大于0,商值為00000000》00001001B;余數(shù)為00000010B賦值給R2
;15、00001010-00100010小于0,商值為00000000》00010010B;
;16、00010100-00100010小于0,商值為00000000》00100100B,余數(shù)為00010100B
;至此算法完成