16

Estoy viendo algunos pequeños códigos ensambladores y estoy teniendo problemas para entender la instrucción TEST y su uso. Estoy mirando el siguiente código al final de un bucle:¿Qué significa la instrucción `test`?

8048531: 84 c0     test al,al 
8048533: 75 dc     jne 8048511 <function+0x2d> 

mi modo de entender TEST es que funciona un poco como el operador AND y se establecen algunas banderas. Supongo que realmente no entiendo cómo funcionan las banderas. test al,al parece que comprueba los mismos bits inferiores y siempre obtendrá los mismos resultados.

¿Alguien puede explicar?

Respuesta

13

Prueba el registro contra sí mismo, solo para establecer las banderas. El resultado será diferente para un cero y un valor distinto de cero.

+1

Entonces, para aclarar, ¿cuándo la PRUEBA produce un resultado que hará saltar al JNE? – danielhc

+1

Establece ZF si el registro probado es cero, de lo contrario, borra el indicador. El JNE salta (o no) dependiendo de esa bandera. –

+5

@danielhc: La instrucción JNE también se conoce como JNZ - "Saltar si no es cero". En su caso, el salto se tomará si el registro al no es cero. – user200783

Cuestiones relacionadas