Here is the pseudo code which computes division of two positive integers.
HR register saves remainder, and LR saves dividend. (and eventually saves root)
However I think this algorithm has some problem.
Because this algorithm sometimes don't recover subtraction.(Division is a continuation of subtraction.)
For example 6 / 3 (0110 / 011)
This algorithm subtract -3 one more time. (This situation never occur when we calculate this division by hand)
So I think this algorithm has some problem.
Don't you agree with me?
How to calculate division remainder in Assembly?
for i = 1 to num_of_bits do
(HR LR) << 1
if (HR >= 0) then
HR = HR - DIVISOR
else
HR = HR + DIVISOR
endif
if (HR > 0) then LR(lsb) = 1 endif
endfor
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…