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

Assembly MIPS:将十六进制数转换为32位二进制,assembly,mips,qtspim,Assembly,Mips,Qtspim,我是MIPS的初学者。我正在尝试将用户输入的十六进制值转换为32位二进制数,并将其存储到数组中。下面是我的想法:例如,数字是(3ABCD123),然后我读取这个值,拆分每个字符并将其放入字符串数组中。然后,对于数组中的每个值,将其转换为4位二进制数并存储到另一个数组中。但我一直坚持将用户输入的字符串拆分为每个字符并存储在数组中。请给出任何建议或帮助,谢谢 MARS/SPIM有一个字符串输入系统调用()。字符串是字符数组;在使用lbu循环输入缓冲区之前,不必手动“拆分”任何内容。(系统调用返回长度

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

MARS/SPIM有一个字符串输入系统调用()。字符串是字符数组;在使用
lbu
循环输入缓冲区之前,不必手动“拆分”任何内容。(系统调用返回长度)

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

您不希望在任何数组中存储单独的4位值;将+或+移位到32位寄存器中,以生成最终的32位整数。只有当你有了它,你才应该将整个单词存储到一个数组中并读取另一个字符串


(MIPS是字节可寻址的,因此您可以存储在2个半字节的块中,但它不是子字节可寻址的,因此您不能
sb
8个半字节分成4个字节和
lw
一个完整的32位字。)

(这不是一个非常详细的答案;在我意识到这在技术上是一个答案之前,这将是一个评论。我认为它解决了问题中明显走上错误轨道的部分,尽管它没有详细说明如何正确操作。还有其他关于堆栈溢出时字符串循环的问题和问题甚至可以在MIPS上搜索十六进制->整数;如果需要代码,请搜索它们。)