;51单片机多字节的除法
;R4R5R6R7放被除数  R0R1R2R3放除数
;当除数的长度为4字节时 R3R4R5R6是余数 R7是商
;当除数的长度为3字节时 R3R4R5是余数 R6R7是商
;当除数的长度为2字节时 R3R4是余数 R5R6R7是商
;当除数的长度为1字节时 R3是余数 R4R5R6R7是商

;被除数是双字时,将R4R5置为0即可,这个程序包打天下
;用一个单元来放中间值 单元名为danyuan
danyuan  equ  3BH
MOV R7,#0ffh
MOV R6,#0ffh
MOV R5,#0ffh
MOV R4,#0ffh
MOV R3,#100
MOV R2,#0H
MOV R1,#0H
MOV R0,#0H
MOV B,#08H
CJNE R0,#00H,DVDL
MOV B,#10H
CLR A
XCH A,R3
XCH A,R2
XCH A,R1
XCH A,R0
CJNE R0,#00H,DVDL
CLR A
XCH A,R2
XCH A,R1
XCH A,R0
MOV B,#18H
CJNE R0,#00H,DVDL
CLR A
XCH A,R1
XCH A,R0
MOV B,#20H
CJNE R0,#00H,DVDL
SETB OV
JMP END_DIV
DVDL: MOV danyuan,#00H
DVDL2: CLR C
 MOV A,R7
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
XCH A,R5
RLC A
XCH A,R5
XCH A,R4
RLC A
XCH A,R4
XCH A,danyuan
RLC A
XCH A,danyuan
JC DVDL1
DVDL4: SUBB A,R3
MOV A,R5
SUBB A,R2
MOV A,R4
SUBB A,R1
MOV A,danyuan
SUBB A,R0
JC DVDL3
DVDL1: CLR C
MOV A,R6
SUBB A,R3
MOV R6,A
MOV A,R5
SUBB A,R2
MOV R5,A
MOV A,R4
SUBB A,R1
MOV R4,A
MOV A,danyuan
SUBB A,R0
MOV danyuan,A
INC R7
DVDL3: DJNZ B,DVDL2
END_DIV:
MOV R3,danyuan
NOP   ;停在这里看结果
END

;验证无误!

作者:风铃
如若复制、转载请注明原文地址:
http://mtoou.info/51-danpianji-zijie/