Resultados 1 al 7 de 7

Tema: JZ JNZ Codigo Ensamblador.

  1. #1
    Vive aquí Avatar de maseric
    Ubicación
    En un lugar llamado Mundo
    Mensajes
    682

    Predeterminado JZ JNZ Codigo Ensamblador.

    Hola buenas, necesitaba que alguien me explicara como funcionan los comandos jz y jnz.

    ----------------------------------------------------Por si esto ayuda---------------------

    Os pongo un ejemplo.

    ¿Que codigo hace que si los interruptores de peso 0 y 7 conectados al puerto A estan en ON, los leds de peso 0,1,2 y 3 estén encendidos?

    A
    ---
    In 08h
    xri 81h
    jz bucle
    mvi a, 0Fh
    out 09h
    bucle:...
    ...


    B:
    ---
    In 08h
    xri 81h
    jnz bucle
    mvi a, 0Fh
    out 09h
    bucle:...
    ...


    Un saludo, gracias.
    TORRE:i5 3550 , Gigabyte GA-z77x-DH3, Gigabyte HD RADEON 7850 OC 2GB, Tacens Radix vi 750W, NOX collbay 3.0,Seagate 7200. Barracuda 1TB
    Portatil 1: SONY VAIO S13 :I7-3520M, NVIDIA 640M, Pantalla VAIO PREMIUM, 500gb (7200rpm), bateria de larga duracion, fibra de magnesio y aluminio.

    Portatil 2:ACER ASPIRE 5612 WLMI Intel core Duo T2300
    Portatil 3: Acer ASPIRE 5051AWXMi (no lo uso ya)

    Mobil: Sony Ericcson Neo V
    Tablet: Sony Tablet S.

  2. #2

    Predeterminado Re: JZ JNZ Codigo Ensamblador.

    JZ y JNZ no son comandos ensamblador, sino instrucciones del procesador.
    En Google encontrarás multitud de explicaciones al respecto, pero basicamente JZ salta a la dirección especificada si el flag de cero está activado, y JNZ salta si el flag de cero está inactivo.

  3. #3
    Vive aquí Avatar de maseric
    Ubicación
    En un lugar llamado Mundo
    Mensajes
    682

    Predeterminado Re: JZ JNZ Codigo Ensamblador.

    Cita Iniciado por jgutierrez Ver mensaje
    JZ y JNZ no son comandos ensamblador, sino instrucciones del procesador.
    En Google encontrarás multitud de explicaciones al respecto, pero basicamente JZ salta a la dirección especificada si el flag de cero está activado, y JNZ salta si el flag de cero está inactivo.
    mmm bueno yo son las que uso, no me refiero a esa explicacion, esa no la entiendo, jz por ejemplo se activa cuando es cierto, (cierto=0?) y jnz cuando es falso(cierto=1?)
    TORRE:i5 3550 , Gigabyte GA-z77x-DH3, Gigabyte HD RADEON 7850 OC 2GB, Tacens Radix vi 750W, NOX collbay 3.0,Seagate 7200. Barracuda 1TB
    Portatil 1: SONY VAIO S13 :I7-3520M, NVIDIA 640M, Pantalla VAIO PREMIUM, 500gb (7200rpm), bateria de larga duracion, fibra de magnesio y aluminio.

    Portatil 2:ACER ASPIRE 5612 WLMI Intel core Duo T2300
    Portatil 3: Acer ASPIRE 5051AWXMi (no lo uso ya)

    Mobil: Sony Ericcson Neo V
    Tablet: Sony Tablet S.

  4. #4

    Predeterminado Re: JZ JNZ Codigo Ensamblador.

    La explicación de jgutierrez es perfecta.

    JZ = jump if zero
    JNZ = jump if not zero

    No te líes con cierto o no cierto, mira el flag de cero.

  5. #5
    Vive aquí Avatar de maseric
    Ubicación
    En un lugar llamado Mundo
    Mensajes
    682

    Predeterminado Re: JZ JNZ Codigo Ensamblador.

    Cita Iniciado por oMega_3097 Ver mensaje
    La explicación de jgutierrez es perfecta.

    JZ = jump if zero
    JNZ = jump if not zero

    No te líes con cierto o no cierto, mira el flag de cero.
    No me indica en ningun lugar el flag zero...no lo tengo presente en mis problemas. En el codigo que os he puesto es lo que tengo, como se entonces el flag zero¿


    Gracias.
    TORRE:i5 3550 , Gigabyte GA-z77x-DH3, Gigabyte HD RADEON 7850 OC 2GB, Tacens Radix vi 750W, NOX collbay 3.0,Seagate 7200. Barracuda 1TB
    Portatil 1: SONY VAIO S13 :I7-3520M, NVIDIA 640M, Pantalla VAIO PREMIUM, 500gb (7200rpm), bateria de larga duracion, fibra de magnesio y aluminio.

    Portatil 2:ACER ASPIRE 5612 WLMI Intel core Duo T2300
    Portatil 3: Acer ASPIRE 5051AWXMi (no lo uso ya)

    Mobil: Sony Ericcson Neo V
    Tablet: Sony Tablet S.

  6. #6
    Vive aquí Avatar de Vixente
    Ubicación
    Albufera - Valencia
    Edad
    39
    Mensajes
    668

    Predeterminado Re: JZ JNZ Codigo Ensamblador.

    Hace mucho que no toco ASM, tampoco sé que ASM estás programando (yo asumiré x86), pero tras mirar algunas dudas rápidamente por google, he llegado a esta conclusión:

    Yo diría que si la operación XOR (XRI) contra el valor 81h (129) y lo que tenga AX (que entiendo que recibe antes de IN, en el puerto 8) devuelve todo ceros, entonces es cuando el ZF (Zero Flag) está activo, o no. Según el caso sigue por la etiqueta bucle o activa los primeros 4 bits (Fh) en AX y manda esto por el puerto 9. Con lo que entiendo que activa dichos LEDS.


    Sobre los flags: http://en.wikipedia.org/wiki/FLAGS_register
    FX8320@4.5 + RL H80i + 16 GB@2133 + R9 290 TriX OC + SSD250GB + SSD120GB + HDD3TB + HDD3TB + CX750M + C. Carbide 300R + 6 Noctuas + 4K 28" + Track IR5 + HOTAS + Steam Controller
    Phenom II 945 + 4 GB + SSD120GB | Pentium G3250 + 8GB + SD120GB | 2 x Raspberry v2 | Raspberry v1 | MSI GT62VR Dominator GTX1060 + 16GB + SSD240GB + HDD1TB

  7. #7
    Vive aquí Avatar de maseric
    Ubicación
    En un lugar llamado Mundo
    Mensajes
    682

    Predeterminado Re: JZ JNZ Codigo Ensamblador.

    Cita Iniciado por Vixente Ver mensaje
    Hace mucho que no toco ASM, tampoco sé que ASM estás programando (yo asumiré x86), pero tras mirar algunas dudas rápidamente por google, he llegado a esta conclusión:

    Yo diría que si la operación XOR (XRI) contra el valor 81h (129) y lo que tenga AX (que entiendo que recibe antes de IN, en el puerto 8) devuelve todo ceros, entonces es cuando el ZF (Zero Flag) está activo, o no. Según el caso sigue por la etiqueta bucle o activa los primeros 4 bits (Fh) en AX y manda esto por el puerto 9. Con lo que entiendo que activa dichos LEDS.


    Sobre los flags: http://en.wikipedia.org/wiki/FLAGS_register
    Muchas gracias vixente, estoy trabajando con el 8255 y los In y out son para configurar los puertos de este micro. Ya me ha quedado mas que claro. Gracias a todos.
    TORRE:i5 3550 , Gigabyte GA-z77x-DH3, Gigabyte HD RADEON 7850 OC 2GB, Tacens Radix vi 750W, NOX collbay 3.0,Seagate 7200. Barracuda 1TB
    Portatil 1: SONY VAIO S13 :I7-3520M, NVIDIA 640M, Pantalla VAIO PREMIUM, 500gb (7200rpm), bateria de larga duracion, fibra de magnesio y aluminio.

    Portatil 2:ACER ASPIRE 5612 WLMI Intel core Duo T2300
    Portatil 3: Acer ASPIRE 5051AWXMi (no lo uso ya)

    Mobil: Sony Ericcson Neo V
    Tablet: Sony Tablet S.

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •