Pregunta

Estoy escribiendo un programa y necesito para determinar si se establecen los bits 3 y 6. Yo sé que puedo girar una palabra o izquierda / derecha desplazarlo.

Pero, ¿cómo puedo acceder estado de bit individual? Cómo se utiliza un operador de bits similares y / XOR?

¿Fue útil?

Solución

Se podría hacer un bit a bit y con 0x08 y 0x40 (bit 0 es suponiendo que el bit de orden más bajo). Se podría utilizar la instrucción andi para hacer esto.

Si $ t0 es el valor que desea probar:

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

$ t1 será distinto de cero si el bit 3 se fija, $ t2 será distinto de cero si el bit 6 se establece.

Otros consejos

Sí, operadores de bits son lo que usa. Usted puede y con una máscara de bits que tiene solamente los bits 3 y 6 conjunto. A continuación, hacer una comparación a cero.

algo así (no he hecho ensamblador en mucho tiempo):

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

Una técnica para la prueba de un solo bit en el montaje MIPS es cambiar el bit deseado en la posición más significativo de bits y utilizar BLTZ / bgez para probar el estado del bit. Esto ahorra una instrucción en los casos en que la instrucción andi no se puede utilizar para seleccionar el bit deseado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top