Pergunta

Eu estou escrevendo um programa e eu preciso determinar se os bits 3 e 6 estão definidas. Eu sei que pode girar uma palavra ou esquerda shift / direito do mouse.

Mas como faço para acessar o estado de bit individual? Eu uso um operador bit a bit como e / xor?

Foi útil?

Solução

Você faria um bit a bit e com 0x08 e 0x40 (presumindo bit 0 é o bit de ordem mais baixa). Você usaria a instrução andi para fazer isso.

Se $ t0 é o valor que você deseja teste:

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

$ t1 será diferente de zero se bit 3 está definido, $ t2 será diferente de zero se bit 6 está definido.

Outras dicas

Sim, operadores bit a bit são o que você usa. Você pode e com uma máscara de bits que tem apenas os bits 3 e 6 set. Em seguida, faça uma comparação com zero.

algo como (Eu não fiz assembler em um longo tempo):

and     r2, r1, 0x48  # r2 = r1 & 0x48
cmp     r2, 0x48
jz     zzzzzz   #jmp to zzzzz if bits 6 and 3 are set

Uma técnica para testar um único bit em MIPS montagem é deslocar o bit desejada para a posição de bit mais significativa e utilização bltz / bgez para testar o estado do bit. Isso economiza uma instrução nos casos em que a instrução andi não pode ser usado para selecionar o bit desejado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top