6

我正在编写一个程序,我需要确定是否设置了第 3 位和第 6 位。我知道我可以旋转一个单词或左/右移动它。

但是我如何访问单个位的状态?我是否使用像 and/xor 这样的按位运算符?

4

3 回答 3

5

您可以按位使用 0x08 和 0x40 (假设位 0 是最低位)。您将使用 andi 指令来执行此操作。

如果 $t0 是您要测试的值:

andi $t1, $t0, 0x08
andi $t2, $t0, 0x40

如果设置了第 3 位,则 $t1 将非零,如果设置了第 6 位,则 $t2 将非零。

于 2009-04-15T02:06:03.297 回答
4

是的,您使用的是按位运算符。您可以使用仅设置第 3 位和第 6 位的位掩码进行与操作。然后与零进行比较。

类似的东西(我很久没做过汇编了):

and     r2, r1, 0x48  # r2 = r1 & 0x48
cmp     r2, 0x48
jz     zzzzzz   #jmp to zzzzz if bits 6 and 3 are set
于 2009-04-15T02:10:12.257 回答
2

One technique for testing a single bit in MIPS assembly is to shift the desired bit into the most-significant bit position and use bltz/bgez to test the state of the bit. This saves an instruction in cases where the andi instruction can't be used to select the desired bit.

于 2009-04-15T02:34:54.337 回答