将值0xB33C分配给寄存器$ t0

时间:2015-03-02 21:12:59

标签: assembly mips

将值0xB33C分配给寄存器$ t0。

答案是:ori $t0, $zero, 0xB33C但是,我很困惑。我认为答案是addi $t0, $t0, 0xB33C

有人可以向我解释一下吗?我不确定ori指令是如何工作的。

1 个答案:

答案 0 :(得分:1)

  

我认为答案是addi $t0, $t0, 0xB33C

也许你的意思是addi $t0, $zero, 0xB33C?无论如何,在这种情况下addi的问题在于它对指令字中编码的16位立即值进行符号扩展。所以你最终会得到0xFFFFB33C

ori执行按位OR,这意味着如果在任何输入中设置了相应的位,则结果中的每个位都将置1。真相表是:

 IN    OUT
----------
0 0  ->  0
0 1  ->  1
1 0  ->  1
1 1  ->  1

正如您可能看到的那样,在零和某个值X之间执行按位OR,将得到X作为结果。因此,ori $t0,$zero,0xB33C会为您提供$t0 = 0 bitwise OR 0xB33C,即$t0 = 0xB33C