2016-11-28 267 views
-1

我遇到了一个问题,那就是如何在寄存器中保留用“srl”指令创建的一个分区的其余部分来打印一个具有二进制值的整数。Assembly MIPS:通过移位将一个十进制数转为二进制

f.e.如果T1是我们要转换的数字,我们使用shift 2正确的逻辑来划分它,在一个循环中:

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

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

j loop 

exit: 

如何余保持一个SRL命令后,再倒回的位留下来打印二进制数字?

+1

使用按位'和'。 PS:'2'的'srl'没有被2除,而是被4除。 – Jester

+1

打印如何?你想要什么样的结果?小数点是如何进入的(我认为你已经在寄存器中有一个整数,而不是十进制串)? –

+0

我已经有了整数在t1中,所以我想打印整数看作二进制。 F.E.如果输入是9,那么输出应该是1001 – Coursal

回答

0

您可以将$ 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 这是余。

相关问题