Ensamblador - Hacer un if en ASMx86 URGE

 
Vista:

Hacer un if en ASMx86 URGE

Publicado por soulblazer (8 intervenciones) el 05/07/2013 00:15:03
Necesito hacer una comparación: Si la variable no es igual a 0, la imprime... sino no imprime nada.

Quise hacer con CMP y saltos pero no sirve, aunque la variable sea 0... la sigue imprimiendo, o sea no considera para nada la comparación que se hizo.

CMP AUX1, 0
JNZ PRINT

PRINT:
"Toda la secuencia para mandar la variable a pantalla"

Muestra la variable en pantalla, aún si la variable es 0, la muestra de todas maneras, no debería mostrarse y el programa está ignorando esa comparación que según donde leí así se hace.

¿Qué hago? Urge.

PD: Usamos un programa que se llama Emu86, el profesor no permite el uso de MASM (porque trae una macro para hacer if, está prohibido usar ese programa).
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 6
Ha mantenido su posición en Ensamblador (en relación al último mes)
Gráfica de Ensamblador

Hacer un if en ASMx86 URGE

Publicado por Jose (8 intervenciones) el 16/07/2013 17:58:57
Hola,

Imagina el siguiente código:

cmp ax, 0
jnz escribe

escribe:
...

Bien. Si ax no es cero se producirá el salto a "escribe". Pero si ax es cero, no se producirá el salto, simplemente se ejecutará la línea siguiente a "jnz escribe", que es : escribe:. Por lo que se ejecutará las dos veces. Hay varios modos de seleccionarlo: Puedes poner una etiqueta después de escribe y llamarla después de "jnz escribe". O saltar si es cero a la etiqueta después de escribe.

Además te aconsejo que no llenes tu programa de ceros. Para saber si un registro contiene cero, lo puedes hacer: or ax, ax (devuelve el mismo resultado que cmp ax, 0, pero es más elegante).

Opción 1:

or ax, ax
jz despues
escribe:
...
despues:

Opción 2:

or ax, ax
jnz escribe
jmp despues
escribe:
...
despues:

Espero que te sea útil y perdona mis errores.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar