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

时间:2016-05-04 03:29:47

标签: assembly cpu-architecture machine-code

我有一个简单计算机的以下指令集

Instruction set

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

类似的东西(假设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