;Inputs:
; Dividend - AARGB0:AARGB1:AARGB2 (0 - most significant!)
; Divisor - BARGB0:BARGB1
;Temporary:
; Counter - LOOPCOUNT
; Remainder- REMB0:REMB1
;Output:
; Quotient - AARGB0:AARGB1:AARGB2
; Remainder- REMB0:REMB1
;
; Size: 28
; Max timing: 4+24*(6+6+4+3+7)-2+3+3=632 cycles (with return)
; Min timing: 4+24*(6+6+6+7)-2+3+3=608 cycles (with return)
;
FXD2416U:
clr REMB0
clr REMB1
mov W, #24
mov LOOPCOUNT, W
LOOPU2416
rl AARGB2 ;shift left divider to pass next bit to remainder
rl AARGB1 ;and shift in next bit of result
rl AARGB0
rl REMB1 ;shift carry into remainder
rl REMB0
rl LOOPCOUNT ;save carry in counter
mov W, BARGB1 ;substract divisor from remainder
sub REMB1, W
mov W, BARGB0
sb C
movsz W, ++BARGB0
mov W, REMB0-w ;keep that byte in W untill we make sure about borrow
snb C ;if no borrow
setb LOOPCOUNT.0 ;set bit 0 of counter (saved carry)
snb LOOPCOUNT.0 ;if no borrow
jmp UOK46LL ;jump
mov W, BARGB1 ;restore remainder if borrow
add REMB1, W
mov W, REMB0 ;read high byte of remainder to W
;to not change it by next instruction
UOK46LL
mov REMB0, W ;store high byte of remainder
clrb C ;copy bit 0 to carry
rr LOOPCOUNT ;and restore counter
decsz LOOPCOUNT ;decrement counter
jmp LOOPU2416 ;and repeat loop if not zero
rl AARGB2 ;shift in last bit of result
rl AARGB1
rl AARGB0
ret
| file: /Techref/scenix/lib/math/div/24by16_sx.htm, 2KB, , updated: 2004/6/10 14:40, local time: 2025/10/24 08:05,
owner: NG--944,
216.73.216.53,10-2-207-162:LOG IN
|
| ©2025 These pages are served without commercial sponsorship. (No popup ads, etc...).Bandwidth abuse increases hosting cost forcing sponsorship or shutdown. This server aggressively defends against automated copying for any reason including offline viewing, duplication, etc... Please respect this requirement and DO NOT RIP THIS SITE. Questions? <A HREF="http://techref.massmind.org/Techref/scenix/lib/math/div/24by16_sx.htm"> SX Math Divide 24 bits by 16</A> |
| Did you find what you needed? |
Welcome to massmind.org! |
|
Ashley Roll has put together a really nice little unit here. Leave off the MAX232 and keep these handy for the few times you need true RS232! |
.