我正在编写一个程序,我需要确定是否设置了第 3 位和第 6 位。我知道我可以旋转一个单词或左/右移动它。
但是我如何访问单个位的状态?我是否使用像 and/xor 这样的按位运算符?
我正在编写一个程序,我需要确定是否设置了第 3 位和第 6 位。我知道我可以旋转一个单词或左/右移动它。
但是我如何访问单个位的状态?我是否使用像 and/xor 这样的按位运算符?
您可以按位使用 0x08 和 0x40 (假设位 0 是最低位)。您将使用 andi 指令来执行此操作。
如果 $t0 是您要测试的值:
andi $t1, $t0, 0x08
andi $t2, $t0, 0x40
如果设置了第 3 位,则 $t1 将非零,如果设置了第 6 位,则 $t2 将非零。
是的,您使用的是按位运算符。您可以使用仅设置第 3 位和第 6 位的位掩码进行与操作。然后与零进行比较。
类似的东西(我很久没做过汇编了):
and r2, r1, 0x48 # r2 = r1 & 0x48
cmp r2, 0x48
jz zzzzzz #jmp to zzzzz if bits 6 and 3 are set
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.