如何仅使用32位寄存器在汇编中创建64位计算器?

时间:2014-12-10 19:02:52

标签: assembly x86 masm32

我想使用32位寄存器创建一个64位计算器(操作:+, - ,*,/)。我必须从控制台读取一个字符串,将其转换为数学表达式(例如:123 + 4321所以我必须将它转换为两个数字123和4321,我必须添加它们)。请给我一个想法,如何在内存中表示一个64位的数字,以及如何使用32位寄存器实现添加!

1 个答案:

答案 0 :(得分:0)

如果这是X86或其他小端处理器,那么你应该在第一个字中存储低位32位,在第二个字中存储高位32位(这就是存储DD的方式) 。加法和减法只需要使用进位/借位。

乘法类似于长手。您可以使用Karatsuba将乘法次数减少到3,但我不确定它是否会节省很多时间,因为乘法相当快。

分工类似于长手。如果你有一个除法使用两个32位寄存器作为被除数,比如使用EDX的X86,EAX,这有帮助(尽管商的大小限制为32位)。一般方法是迭代一些时间以产生收敛于实际商的估计商。有几种方法可以做到这一点。您可以对64位除法进行网络搜索,以查找如何执行此操作的示例。