JMP

Top 

Realiza un salto incondicional a otra parte del programa. Puede ser dentro de la misma porción de código o de alguna otra subrutina. Esta se identifica por una etiqueta (label), y es siempre hacia adelante (no es prudente hacer saltos hacia atrás). Es el punto a partir del cual se seguirá ejecutando el programa.

 

            JMP Sub1          ;Salta a la línea llamada "Sub1"

otro:       ST q0.0           ;LLega aquí mediante instrucción de salto (JMP) o llamada (CAL)

            LD sm0.4

            JMPC Sub1         ;Salta a la línea llamada "Sub1" si el bit 0 del acumulador es 1

otro2:      LD sm0.5

            JMPNC Sub1        ;Salta a la línea llamada "Sub1" si el bit 0 del acumulador es 0

            END               ;Termina el programa y vuelve a ejecutar desde el principio

 

Sub1:       LD i0.0           ;Primera instrucción de la subrutina

            AND i0.1

            ST q0.2

            END               ;Termina el programa y vuelve a ejecutar desde el principio

 

 

Esta instrucción se ubica en el sector de salidas


Sintaxis

 Nótese que termina con los ":", y que éstos no aparecen cuando está con la instrucción. Así es como se distingue entre destino de salto y argumento.
 Supongamos que hay varias máquinas iguales controladas por un solo equipo. Repetir la rutina por cada una adaptando los nombres de los saltos es para errores. Se puede organizar poniendo el código de control de cada una en una pestaña. Esto reduce a copiar y pegar con mucho menos cambios. Entonces, para que las etiquetas no se confundan se les añade el nombre de la pestaña correspondiente:
  

NombrePestaña@Etiqueta

   

  Entonces el programa (principal) quedaría de esta forma:

  

        CAL Main@Sub1   ;Salta (o llama) a la subrutina de nombre "Sub1"

        ST q0.0         ;Instrucción siguiente o punto de retorno de la subrutina

        LD sm0.4

        CALC Main@Sub1  ;Salta (o llama) a la subrutina de nombre "Sub1" si el bit 0 del acumulador es 1

        LD sm0.5

        CALNC Main@Sub1 ;Salta a la subrutina llamada "Sub1" si el bit 0 del acumulador es 0

        END             ;Termina el programa y vuelve a ejecutar desde el principio

 

Sub1:   LD i0.0         ;Primera instrucción de la subrutina

        RETC            ;Retorno condicional (si el bit 0 del acumulador es 1)

        AND i0.1

        RETNC           ;Retorno condicional (si el bit 0 del acumulador es 0)

        XOR i0.2

        RET             ;Retorno incondicional de la subrutina

 

 

JMPC

JMPNC

CAL

 

 

Lista de instrucciones
Índice