如何检查某个数字 n 是否可以被 10 整除?

How can I check if some number n is divisible by 10?

我有以下用于简单计算机的指令集

上述指令集中没有取余或取模命令。所以我的项目的最后一部分是检查我从之前的计算中得到的数字 n 是否可以被 10 整除。如果是,那么我必须存储给定的数字 n进入数据存储器,如果不是则数字无效,我必须使用上面列表中的指令。

我无法理解检查 n 是否可以被 10 整除的逻辑。我已经知道如何检查 n 是偶数还是奇数,但这并不能解决整除问题。

最简单的除以10的方法就是反复减10,直到余数小于10

result = 0
remains = divident
while (remains >= divisor)
    result++
    remains -= divisor

一个更聪明的方法是使用移位,你重复(寄存器宽度决定你必须移位的频率)左移结果和除数,将进位移入第二个寄存器。每当第二个寄存器大于或等于除数时,从第二个寄存器中减去它,并将结果加一。
(这类似于学校里的小数除法,如果你还记得的话)

像这样(假设 32 位寄存器)

result=0
temp=0
loop 32 times
   shift left result
   shift left divident
   shift left with carry temp
   if (temp > divisor)
      result ++
      temp -= divisor