如何在MIPS中访问单个字的各个位的状态?

时间:2009-04-15 02:00:59

标签: assembly bit-manipulation mips

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

但是我如何访问个别位的状态?我是否使用和/ xor?

这样的按位运算符

3 个答案:

答案 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指令选择所需的位,这将保存指令。