MIPS:将十六进制数转换为32位二进制数

时间:2019-11-10 05:54:11

标签: assembly mips qtspim

我是MIPS的初学者。我试图弄清楚将用户输入的十六进制值转换为32位二进制数,并将其存储到数组中。我的想法是这样的:例如,数字为(3ABCD123),然后读取此值并拆分每个字符并将其放入字符串数组中。然后,对于数组中的每个值,将其转换为4位二进制数并将其存储到另一个数组中。但是我一直坚持将用户输入的字符串分割成每个字符并将其存储在数组中。请提供任何建议或帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

MARS / SPIM有一个字符串输入系统调用(https://www.doc.ic.ac.uk/lab/secondyear/spim/node8.html)。字符串一个char数组;您无需手动“拆分”任何内容,直到使用lbu遍历输入缓冲区。 (然后系统调用返回该长度)。

然后,您将要验证输入以检查它是一个十六进制数字,并计算一个4位整数。

您不想在任何数组中存储单独的4位值;将它们进行+或+运算到一个32位寄存器中,以构建最终的32位整数。只有具备了该条件后,您才应该将整个单词存储到数组中并读取另一个字符串。

(MIPS是字节可寻址的,因此您可以存储2个半字节的块,但是它不是亚字节可寻址的,因此无法将sb 8个半字节分成4个字节,而lw 32位字。)