【发布时间】:2011-10-10 04:10:00
【问题描述】:
这是计算两个正整数相除的伪代码。
HR寄存器保存余数,LR寄存器保存被除数。 (并最终保存root)
但是我认为这个算法有一些问题。
因为这个算法有时不能恢复减法。(除法是减法的继续。)
例如6 / 3 (0110 / 011)
该算法再减去一次-3。 (当我们手动计算这个除法时,这种情况永远不会发生)
所以我觉得这个算法有问题。
你不同意我的看法吗?
如何在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
【问题讨论】:
-
这是汇编?!用什么芯片?
-
在 SPARC 中。我一定写过什么是架构……
-
stackoverflow.com/questions/5189631/…。正如最初提出的那样,问题是关于 6800,但答案同样适用于任何没有除法指令的处理器。
-
@JerryCoffin 哇,太棒了!
标签: algorithm assembly division integer-division sparc