Вот псевдокод, который вычисляет деление двух положительных целых чисел.
Регистр HR сохраняет остаток, а LR сохраняет делимое. (и в конечном итоге сохраняет root)
Однако я думаю, что у этого алгоритма есть некоторые проблемы.
Потому что этот алгоритм иногда не восстанавливает вычитание. (Деление является продолжением вычитания.)
Например, 6 / 3 (0110 / 011)
Этот алгоритм вычитает -3 еще раз. (Такая ситуация никогда не возникает, когда мы вычисляем это деление вручную)
Так что я думаю, что у этого алгоритма есть некоторые проблемы.
Вы не согласны со мной? Как рассчитать остаток от деления в сборке?
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