我正在编写程序,我需要确定是否设置了第3位和第6位。我知道我可以旋转一个单词或左/右移动它。
但是我如何访问个别位的状态?我是否使用和/ xor?
这样的按位运算符答案 0 :(得分:4)
你会按位进行,并使用0x08和0x40(假设位0是最低位)。您可以使用andi指令执行此操作。
如果$ t0是您要测试的值:
andi $t1, $t0, 0x08
andi $t2, $t0, 0x40
如果设置了第3位,则$ t1将为非零;如果设置了第6位,则$ t2将为非零。
答案 1 :(得分:4)
是的,按位运算符就是你使用的。您可以使用仅设置了位3和6的位掩码进行AND操作。然后进行零比较。
类似的东西(我很长时间没有完成汇编程序):
and r2, r1, 0x48 # r2 = r1 & 0x48
cmp r2, 0x48
jz zzzzzz #jmp to zzzzz if bits 6 and 3 are set
答案 2 :(得分:2)
在MIPS汇编中测试单个位的一种技术是将所需位移到最高位位置,并使用bltz / bgez来测试位的状态。如果不能使用andi指令选择所需的位,这将保存指令。