Stereo System User Manual

MOTOROLA DSP96002 USER’S MANUAL B-57
dive2big eor d2,d2
do #32,divloop_slow ;same algorithm as 1st routine
rol d0
rol d2
cmp d1,d2
sub d1,d2 ifhs
divloop_slow rol d0
not d0
divdone end
The final quotient is not produced. This program may calculate only the number of quotient bits required
and has variable execution time.
Unsigned 32 Bit Integer
Remainder of d0 = d0 rem d1, d0>=d1
cmp d1,d0 d0.l,d2.m
jlo divdone ;divisor > dividend
bfind d0,d0 #0,d2.l
jmi dive2big ;dividend has
;32 significant bits
bfind d1,d2 d0.h,d0.l ;find # of remainder bits
move d2.h,d2.l
sub d0,d2 d2.m,d0.l
inc d2 d2.l,d2.h ;compute loop count
lsl d2,d1 d2.l,d2.h ;align divisor
do d2.l,remloop_fast
cmp d1,d0 ;perform test subtract
sub d1,d0 ifhs ;if no borrow, perform subtract
rol d0 ;adjust remainder
remloop_fast lsr d2,d0 ;align remainder
jmp remdone ;done
dive2big do #32,remloop_slow ;same algorithm as 1st routine
rol d0
rol d2
cmp d1,d2
sub d1,d2 ifhs
remloop_slow tfr d2,d0
remdone end
B.1.32 Signed Integer Divide
The signed integer divide operation divides two 32 bit signed two’s complement integers. The divide oper-
ation uses a one quadrant restoring divide iteration to divide the operands. The following code divides d5/
d2 with the resulting quotient in d0.