所以这里我遇到了一个问题。我的指令集中只有25个指令。(没有乘法,除法,减法,递增指令)。 现在,我正在尝试进行二元除法。我的问题是,我怎么能知道除数是否小于除数以便将它们都减去(以2的恭维形式)?
说明书:
答案 0 :(得分:2)
许多指令可以分解为更简单的指令。
您似乎需要compare
指令。
如果没有compare
指令,可以使用subtract
进行模拟,并在减去后检查处理器标志的状态。
您没有subtract
指令,因此您可以通过添加相减值的负数来模拟它。
如果没有negate
指令,可以通过翻转所有位的值并加1来以二进制补码运算来模拟它。
答案 1 :(得分:2)
我假设AC是一个寄存器(累加器)。所以你需要的是SPA命令,而AC有减去两个数字的结果。或者SNA,取决于你从什么中减去。
同样,你没有减法。替换为添加一个数字和另一个数字的负数。正如Ferruccio所说,负面是补充加两个。
编辑:如果AC是正/负,则SPA / SNA通过跳过下一个命令来工作。因此,如果你想拥有一个非常重要的if语句,你需要放置一个Sxx后跟一个BUN(无条件分支)。如果条件为真,则跳过分支,如果条件为假,则执行分支。
请注意,它是传统装配逻辑的反转。通常情况下,如果条件成立则为“分支”;在这台机器上,如果条件是假的,它就是“分支”。
为了记录,你的指令集被故意阻止。现实生活中的CPU比程序员更友好,甚至是RISC类型。