出于学习目的,我试图在MARIE中编写任何整数除法。
这是标准(希望是正确的)代码,它将X除以Y和余数,但只有正整数。
MFMessageComposeViewController
我怎样才能让它适用于否定?可能有些IF和一些掩码可能,但我不知道如何正确地做到这一点。
答案 0 :(得分:1)
取决于您如何定义... D/d=[q,r]
(Dividend / divisor = [quotient,remainder])
(在x86 CPU上,余数r
的符号始终与被除数D
的符号相同
如果你看一下上面的结果,在每种情况下绝对值是相同的:
余数具有被除数的符号,商具有被除数XOR除数的符号([+, +] == [-, -] ==
+ vs [+, -] == [-, +] ==
- )。
所以你可以在你的例程开始时添加一个准备部分,它将测试每个值,并标记为一些标志,无论是正面还是负面,将其转换为正面,进行划分,然后是当前{{1通过标志修补结果。
有点像(这是我第一次使用Marie Assembly,所以更像是一个提示,并在需要的地方纠正它,希望只有语法,但可能甚至是逻辑错误,我没有验证代码的工作原理!):
END
其他选项可能是针对每种情况(4种变体)具有单独的例程变量,因为它们仅在ADD / SUBT Y / ONE和终止条件000与800之间不同,这将针对每种情况执行更少的指令(更好的性能),但会有更多的代码行加上面的代码可能会给你一些新的想法,如何在Assembly中做事。