CALC | Top

CALC Realiza un salto a una subrutina si el bit 0 del acumulador es 1. Esta se identifica por una etiqueta (label), y es siempre hacia adelante (no se permiten saltos hacia atrás) CAL Sub1 ;Salta a la subrutina llamada "Sub1" ST q0.0 ;Instrucción siguiente o punto de retorno de la subrutina LD sm0.4 CALC Sub1 ;Salta a la subrutina llamada "Sub1" si el bit 0 del acumulador es 1 LD sm0.5 CALNC 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 Encadenamiento de llamados `ld 1 ;Valor 1 al acumulador (Acc)` `` `CALC sum_xi_yi ;Ejecuta` `sum_xi_yi porque el Acc está en 1` `` `CALC suma_yi ;``suma_y se ejecutará si Acc quedó en 1 después de haber ejecutado` `sum_xi_yi` `` `CALC a ;a``` `se ejecutará si Acc quedó en 1 después de haber ejecutado` `suma_yi` sum_xi_yi, suma_yi y a alteran el valor del acumulador. Por eso la siguiente es dependiente de la anterior. Para que el esquema funcione cada una de las subrutinas debería terminar con un LD 1: `sum_xi_yi: instrucción``` `...` `...` `LD 1``;Valor` `devuelto en el acumulador definido` `RET` ``suma_yi`: instrucción``` `...` `...` `LD 1``;``Valor` `devuelto en el acumulador definido` `RET` Representación en Ladder CAL CALNC JMP RET Lista de instrucciones Indice