0

我正在使用一个网站来学习 MIPS 汇编以进行练习。

练习 2

在每个寄存器 $1 到 $7 中设置相应的位。也就是说,在寄存器 1 中设置位 1(并将其余部分清零),在 $2 中设置位 2(并将其余部分清零),依此类推。在您的程序中仅使用一条 ori 指令来设置寄存器 $1 中的位。开头:'ori $1,$0,0x01' 不要使用除此之外的任何 ori 指令。注意:寄存器的第 1 位是右数第二个,即(无符号二进制)对应于 2 的第一个幂。

有人可以解释一下吗?

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

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

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

4

1 回答 1

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
...
于 2013-02-28T15:17:29.907 回答