(ASM)“设置位1”是什么意思?

时间:2013-02-28 15:11:11

标签: assembly mips

我正在学习使用网站进行练习练习的MIPS大会。

  

练习2

     

在每个寄存器$ 1到$ 7中设置相应的位。 即   在寄存器1中设置第1位(并将其余部分清零),在$ 2设置第2位   (并将其余部分清零),等等。只使用一个ori   程序中的指令,将寄存器$ 1中的位置1。   从...开始:   'ori $ 1,$ 0,0x01'   不要使用除此之外的任何ori指令。   注意:寄存器的第1位是右边的第二个,即   (在无符号二进制中)对应于2的第一个幂。

有人可以解释一下吗?

将0x02放入寄存器1是否正确? (我不能使用ori,所以我会使用左移使0x01变成0x02)

这使得寄存器1 == 10(二进制)。因此,寄存器1的第1位是1,其他位是0?

我很困惑,因为MIPS模拟器没有显示前导零。所以我不知道我是否正确这样做。

1 个答案:

答案 0 :(得分:0)

是的,你的解释是正确的。

ori $1,$0,0x01  # Initialize $1
sll $2,$1,2     # Set bit 2 or $2
sll $3,$1,3     # Set bit 3 of $3
...             # ..and so on for $4..$7
sll $1,$1,1     # Finally set bit 1 of $1

或者:

ori $1,$0,0x01
sll $1,$1,1
sll $2,$1,1
sll $3,$2,1
...