【问题标题】:Getting bytes from user inputted integers从用户输入的整数中获取字节
【发布时间】:2015-09-21 04:19:09
【问题描述】:

所以我可以设法让用户输入的整数到 $v0,然后我使用

la $t0 ($v0)

然后我将输入的整数存储到 $t0 中。我将如何尝试从 $t0 获取整数的第一个字节。每次我尝试使用

lb $t1 0($t0)

我收到一个错误:发生异常 7 [Bad data address] 并被忽略。

【问题讨论】:

  • 我假设 la $t0 ($v0) 是一种类型,而您的意思是 lw $t0, ($v0)

标签: assembly mips spim


【解决方案1】:

lb 指令用于从内存中读取一个字节。也就是说,lb $t1, 0($t0) 会尝试从内存中存储在$t0 中的地址读取一个字节(它还会对该字节进行符号扩展,这可能不是您想要的)。

您要做的不是从内存中读取,而是隔离已存储在寄存器中的值的最低有效字节。您可以使用andi 指令来做到这一点:

andi $t1, $t0, 0xFF  # $t1 = $t0 AND 0xFF

您应该阅读bitwise logic,因为此类操作在汇编语言代码中很常见。

【讨论】:

    猜你喜欢
    • 2012-01-29
    • 2012-02-04
    • 2014-08-18
    • 2018-06-23
    • 2020-12-26
    • 2016-05-28
    • 1970-01-01
    • 2013-01-18
    相关资源
    最近更新 更多