"Jerome H. Fine" <jhfinedp3k at compsys.to> wrote:
Hi All,
I have noticed what may be an interesting result when I use the
PDP-11 Integer Divide Instruction "Div". Since I have noticed
at least one individual who worked on the microcode for the
PDP-11, perhaps there is an explicit "Yes / No" answer to my
question:
Since this actually have nothing to do with the microcode, and actually
is nothing specific with the PDP-11 DIV instruction, just about anyone
should be able to answer definitely.
If I divide 196612 by 3 - i.e. "Div (R2),R0"
where R0 = 3, R1 = 4,
(R2) = 3
the result (in addition to the condition bits) is R0 =
1, R1 = 1 which is
exactly correct if the quotient is regarded as a 32 bit result with
R0 being
the low order 16 bits of that result and the high
order 32 bits are
somewhere
else - probably inaccessible as far as programming is
concerned, but
easily
obtained by:
Mov R1-(SP) ; Save low order 16 bits of dividend
Mov R0,R1 ; Divide high order 16 bits
Clr R0 ; of dividend
Div (R2),R0 ; by the divisor
Mov R0,R3 ; Save high order 16 bits of quotient
Mov R1,R0 ; Divide the remainder
Mov (SP)+,R1 ; of the dividend
Div (R2),R0 ; by the divisor
i.e. R3 now contains the high order 16 bits of the 32 bit quotient
with R0 holding the low order 16 bits of the 32 bit quotient
What you have implemented here, as well as described, is the exact way
you should have been taught how to do division on paper in elementary
school.
Yes, that algorithm is valid, and can be extended to arbitrary sizes, as
long as you remember the full method.
Can anyone confirm what I have found in practice?
Certainly. It's basic math, the way it's taught in elementary school.
That was atleast the first way I was taught how do do divides on big
numbers on paper.
Even better would be a method of retrieving the high
order 16 bits of the quotient in a manner which takes
fewer instructions and without a second divide instruction!
I doubt you'll find it.
Johnny
--
Johnny Billquist || "I'm on a bus
|| on a psychedelic trip
email: bqt at update.uu.se || Reading murder books
pdp is alive! || tryin' to stay hip" - B. Idol