如何在mips组件中打印大于32位的数字?

时间:2010-02-06 04:16:45

标签: assembly printing overflow mips multiplying

在我的mips汇编代码中,我使用multi指令乘以2个大数,因为结果不适合一个寄存器。这意味着该数字保存在hi和lo特殊寄存器中。我的问题是如何打印乘法的结果。我可以访问hi和lo并将它们放在其他寄存器中(即$ t0,$ t1),但我不知道如何组合这两个数字以打印结果。感谢。

2 个答案:

答案 0 :(得分:3)

(这个答案故意保持高水平,因为我很确定没有人在mips汇编中打印数字,除非他们正在做家庭作业。)

如果你不介意用十六进制表示,那就没问题了;只用十六进制打印一个单词,然后打印下一个单词。不要忘记在第二个单词中包含前导零! (实际上我认为spim,我认为你正在使用,只能在10号基础上打印,所以即使这可能是一件苦差事。)

如果你想要它在10号基地,这个问题很快就会进入我称之为'痛苦的屁股'的类别。在“现实生活中”,我不会打扰;在C中进行打印,某些编译人员在某处解决了所有这些问题。对于家庭作业,给自己写一个功能,将输入重复除以10,最终你会得到打印出来的数字。如果mips没有64位除法指令(不能告诉你我的头脑)这对你来说是一个非常有趣的问题。

答案 1 :(得分:-1)

打印数字的解决方案实际上是将数字重复除以10,然后将剩下的除数存储在一个字符串中然后将其颠倒读取。但唯一的挑战是如果mips32只有32位除法则除以64位数。我在这个页面找到了一种方法:

https://www.codeproject.com/questions/714114/how-to-print-bit-in