用汇编语言查找偶数或奇数

时间:2018-10-07 10:43:52

标签: assembly wombat-1

如何检查Wombat CPU仿真器中的数字是偶数还是奇数?

在C ++中,我们可以说 if(num%2==0) even else false, 但是Wombat中没有模数%指令,那么如何找到偶数或奇数呢?

1 个答案:

答案 0 :(得分:2)

哇,这是一个非常有限的... ... CPU :-)如果没有and指令,您可能会发现有必要执行divide(通过值的两个),然后是该结果的multiply(两个)。

假设divide是一个整数运算,如果原始值是奇数,则半值将被舍入或截断,例如45均减半为{ {1}},然后加倍得到2

因此,如果该值是偶数,则“ half-then-double”运算的结果将与原始值相同,否则将有所不同。

因此,您可以使用4后跟subtract来选择偶数或奇数代码路径。

换句话说,是这样的:

jmpn

请记住,这是未经测试的,但它可能是一个不错的起点。我特别不确定Start: read // read to accumulator and store. store Orig divide Two // round to even then subtract original. multiply Two subtract Orig jmpn WasOdd // Choose even/odd code path. WasEven: ... jump Done WasOdd: ... Done: stop Orig: .data 2 0 // For original data. Two: .data 2 2 // For halving/doubling. 伪操作,但是根据示例代码,目的是提供大小(字节数)和初始值。如果我误解了它的工作原理,则需要对此进行调整。