【问题标题】:Assembly MIPS: turning a decimal number to binary by shifting汇编 MIPS:通过移位将十进制数转换为二进制数
【发布时间】:2017-04-12 19:11:41
【问题描述】:

我很难弄清楚如何将使用“srl”指令进行的除法的剩余部分保存在寄存器中,以打印带有二进制值的整数。

f.e.如果 t1 是我们要转换的数字,我们在循环内使用逻辑右移 2 来除它:

loop:
    srl     $t2, $t1, 2    #number/2

    beq $t2, '0', exit     #if the quotient is 0, exit the loop

j loop

exit:

如何在 srl 命令后保留余数,然后将余数的位倒回以打印二进制数?

【问题讨论】:

  • 按位使用and。 PS:srl by 2 不是除以2,而是除以4
  • 如何打印?你到底想要什么样的结果?十进制是如何产生的(我以为你已经在寄存器中有一个整数,而不是十进制字符串)?
  • 我已经在 t1 中有整数,所以我想将整数打印为二进制。 f.e.如果输入为 9,则输出应为 1001

标签: assembly binary mips


【解决方案1】:

您可以将 $t1 向左移动 29 (31-2),然后再向右移动。这应该让您在原始 $t1 中保留最低两位。

这当然是假设一个 32 位整数大小。

例如,假设您从值 5 开始。 然后你有 0000 0000 0000 0000 0000 0000 0000 0101

向左移动 29 得到 1000 0000 0000 0000 0000 0000 0000 0000 0000

然后,向后移动: 0000 0000 0000 0000 0000 0000 0000 0001 这是余数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 2015-05-29
    • 2014-05-24
    • 2014-07-20
    相关资源
    最近更新 更多