【问题标题】:MIPS: Converting hexadecimal number to 32-bit binaryMIPS:将十六进制数转换为 32 位二进制
【发布时间】:2019-11-10 05:54:11
【问题描述】:

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

【问题讨论】:

    标签: assembly mips qtspim


    【解决方案1】:

    MARS/SPIM 有一个字符串输入系统调用 (https://www.doc.ic.ac.uk/lab/secondyear/spim/node8.html)。一个字符串一个字符数组;在使用lbu 循环输入缓冲区之前,您不必手动“拆分”任何内容。 (系统调用返回长度)。

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

    您不想在任何数组中存储单独的 4 位值; shift + OR 将它们放入一个 32 位寄存器,以构建最终的 32 位整数。只有当你拥有它之后,你才应该将整个单词存储到一个数组中并读取另一个字符串。

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

    【讨论】:

    • (这不是一个非常详细的答案;这将是一个评论,直到我意识到它在技术上是一个答案。我认为它解决了明确在错误轨道上的问题部分, 尽管它没有详细介绍如何正确执行。还有其他关于在 Stack Overflow 上循环字符串的问答,甚至可能是关于 MIPS 上的 hex->integer;如果需要代码,请搜索它们。 )
    猜你喜欢
    • 2013-12-26
    • 2015-01-28
    • 1970-01-01
    • 2011-04-30
    • 2011-03-05
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多