Está en la página 1de 6

INSTRUCCIONES DE CONTROL DE PROGRAMA

Scc  Set According to Condition Ejemplo:


Operación: Si la condición es verdadera CLR D2
1’s ⇒ destino CMP.B D0,D1
0’s ⇒ destino SEQ D2
Si el contenido de los registros D0 y D1 son iguales el byte menos significativo de D2 se pone a
Sintaxis Ensamblador: Scc <ea> 1 D2=$FF, si el contenido de los registros es distinto el byte menos significativo se pone a 0
D2=$0.
Atributos: Tamaño= BYTE.
Descripción: La condición especificada es testeada, de forma que,si la condición se cumple el
byte especificado por <ea>se pone a1, en caso contrario, este byte se pone a0.
Registro de Códigos de Condición:
X N Z V C
- - - - -
X No afectado
N No afectado
Z No afectado
V No afectado
C No afectado
Modos de direccionamiento:
Operando fuente
Dn
(An)
(An)+
-(An)
d16(An)
d8(An,Xn)
xxx.W
xxx.L
Conjunto de condiciones:
CÓDIGO cc CONDICIÓN TEST
HI Salta si es superior (High) C • Z Sin signo
LS Salta si es Inferior o igual (Low) C + Z Sin signo
CC Salta si el bit de acarreo está a 0 C=0 Sin signo
CS Salta si el bit de acarreo está a 1 C=1 Sin signo
NE Salta si no son iguales Z=0 -
EQ Salta si son iguales Z=1 -
VC Salta si el bit de overflow está a 0 V=0 -
VS Salta si el bit de overflow está a 1 V=1 -
PL Salta si es positivo N=0 Con signo
MI Salta si es negativo N=1 Con signo
GE Salta si es mayor o igual N V+N V Con signo
LT Salta si es menor N V+N V Con signo
GT Salta si es mayor N V Z+N V Z Con signo
LE Salta si es menor o igual Z+N V+N V Con signo
64 65
JMP
SALTOS INCONDICIONALES
Operación: destino ⇒ destino
BRA
Sintaxis Ensamblador: JMP<ea>
Operación: PC+offset ⇒ PC
Atributos: Tamaño= -
Sintaxis Ensamblador: BRA <etiqueta>
Descripción: el programa continua su ejecución en la dirección efectiva especificada por la
Atributos: Tamaño= BYTE, WORD. instrucción. El contenido de el PC se pierde.
Descripción: Salta a la dirección identificada por la etiqueta, el programa sigue ejecutándose Registro de Códigos de Condición:
en la posición (PC)+offset.
X N Z V C
Registro de Códigos de Condición: - - - - -
X N Z V C X No afectado
- - - - - N No afectado
Z No afectado
X No afectado V No afectado
N No afectado C No afectado
Z No afectado
V No afectado Modos de direccionamiento:
C No afectado
Operando fuente
Modos de direccionamiento: direccionamiento implicito. (An)
d16(An)
Ejemplo:
d8(An,Xn)
BRA BUCLE xxx.W
El programador en este tipo de instrucciones no indica el desplazamiento, sino que en su lugar, xxx.L
indica la dirección de memoria a la que quiere saltar mediante una etiqueta, en este caso d16(PC)
BUCLE. d8(PC,Xn)
Ejemplo:
JMP (A0)
Salta a la dirección a la que apunta el registro de direcciones A0.
66 67
BSR  Branch to Subrutine JSR  Jump to Subrutine
Operación: PC ⇒ -(SP) Operación: PC ⇒ -(SP)
PC+offset ⇒ PC
Sintaxis Ensamblador: JSR <ea>
Sintaxis Ensamblador: BSR <etiqueta>
Atributos: Tamaño= -.
Atributos: Tamaño= BYTE,WORD.
Descripción: esta instrucción pasa el control al inicio de la subrutina, para ello, guarda el
Descripción: pasa el control al inicio de la subrutina, para ello, guarda el contenido del PC en contenido del PC en la pila e introduce en el PC la dirección efectiva especificada. Como
la pila y suma al contenido de éste el offset. Como resultado de esta instrucción se produce el resultado de esta instrucción se produce el salto a la dirección especificada.
salto a la dirección especificada por la etiqueta.
Registro de Códigos de Condición: Registro de Códigos de Condición:
X N Z V C X N Z V C
- - - - - - - - - -
X No afectado X No afectado
N No afectado N No afectado
Z No afectado Z No afectado
V No afectado V No afectado
C No afectado C No afectado
Modos de direccionamiento: direccionamiento implicito. Modos de direccionamiento:
Operando fuente
Ejemplo: (An)
d16(An)
BSR SUBRUTINA_1
d8(An,Xn)
El programador en este tipo de instrucciones no indica el desplazamiento, sino que en su lugar
indica la dirección de memoria a la que quiere saltar mediante una etiqueta, en este caso xxx.W
SUBRUTINA_1. xxx.L
. d16(PC)
d8(PC,Xn)
Ejemplo:
JSR (A0)
Salta a la dirección inicio de la subrutina a la que apunta el registro de direcciones A0.
68 69
RTS  Return from Subrutina RTR  Return and Restore
Operación: (SP)+ ⇒PC Operación: (SP)+ ⇒ CCR
(SP)+ ⇒ PC
Sintaxis Ensamblador: RTS
Sintaxis Ensamblador: RTR
Atributos: Tamaño= -
Atributos: Tamaño= -
Descripción: con esta instrucción devolvemos el control al programa principal desde el cual se
hizo la llamada a subrutina, para ello, se restaura el contador de programa PC con el valor del Descripción: con esta instrucción devolvemos el control al programa principal desde el cual se
PC que se almacenó en la pila con la instrucción de salto a subrutina. Como resultado de esta hizo la llamada a subrutina. Para ello, se restaura el valor del registro de códigos de condición
instrucción se produce un salto a la siguiente instrucción existente en el programa principal tras CCR, hay que tener en cuenta que no existe ninguna instrucción de salto a subrutina en el que
la llamada a la subrutina. se almacene el valor del registro CCR, por lo tanto, esta labor recae en la programación de la
propia subrutina. Tras la restauración del CCR se produce la restauración del PC con el valor
Registro de Códigos de Condición: del PC que se almacenó en la pila con la instrucción de salto a subrutina. Como resultado de
esta instrucción se produce un salto a la siguiente instrucción existente en el programa principal
X N Z V C tras la llamada a la subrutina.
- - - - -
Registro de Códigos de Condición:
X No afectado
N No afectado X N Z V C
Z No afectado * * * * *
V No afectado
C No afectado El valor del CCR se restablece desde la pila.
Modos de direccionamiento: direccionamiento implicito. Modos de direccionamiento: direccionamiento implicito.
Ejemplo: Ejemplo:
. .
70 71
SALTOS CONDICIONALES DBcc  Test Condition, Decrement, and Branch
Bcc Operación: Si la condición es falsa
Dn-1 ⇒ Dn
Operación: Si la condición es verdadera Si Dn != -1
PC+offset ⇒ PC PC+offset ⇒ PC
Sintaxis Ensamblador: Bcc <etiqueta> Sintaxis Ensamblador: DBcc Dn,<etiqueta>
Atributos: Tamaño= BYTE, WORD. Atributos: Tamaño= WORD.
Descripción: Se trata de un salto condicional, de forma que, si la condición especificada por cc Descripción: Esta instrucción consta de tres parámetros: una condición, un registro de datos
es verdadera entonces salta a la dirección identificada por la etiqueta (PC +offset), en caso que contiene el número de veces que el bucle será ejecutado y un offset que determina la
contrario no se produce el salto y se sigue la ejecución normal del programa. dirección de salto. Cuando la instrucción DBcc es ejecutada lo primero es testear la condición,
de forma que, si ésta es verdadera, el salto no tiene lugar y ejecutamos la instrucción que le
Registro de Códigos de Condición: sigue, en caso contrario, en el que la condición sea falsa, se decrementa el contenido del
registro de datos. Tras este decremento se evalúa el contenido, de manera que, si el valor de
X N Z V C este registro es igual a –1 no se produce salto y se ejecuta la instrucción que sigue a DBcc, en
- - - - - caso contrario (Dn!=-1), se salta a la dirección especificada por la etiqueta.
X No afectado
N No afectado
Z No afectado
V No afectado DBcc Dn,<etiqueta>
C No afectado
Modos de direccionamiento: direccionamiento implicito. Evaluación de
Verdadera la condición
Conjunto de condiciones: cc
CÓDIGO cc CONDICIÓN TEST Falsa
HI Salta si es superior (High) C • Z Sin signo Dn--
LS Salta si es Inferior o igual (Low) C + Z Sin signo
CC Salta si el bit de acarreo está a 0 C=0 Sin signo
CS Salta si el bit de acarreo está a 1 C=1 Sin signo
NE Salta si no son iguales Z=0 - Si Dn=-1 No
EQ Salta si son iguales Z=1 -
VC Salta si el bit de overflow está a 0 V=0 -
VS Salta si el bit de overflow está a 1 V=1 -
PL Salta si es positivo N=0 Con signo Instrucción que sigue a
DBcc Salto a la Etiqueta
MI Salta si es negativo N=1 Con signo
GE Salta si es mayor o igual N V+N V Con signo
LT Salta si es menor N V+N V Con signo
GT Salta si es mayor N V Z+N V Z Con signo
LE Salta si es menor o igual Z+N V+N V Con signo
Registro de Códigos de Condición:
X N Z V C
Ejemplo: - - - - -
BVS BUCLE X No afectado
El programador en este tipo de instrucciones no indica el desplazamiento, sino que en su lugar, N No afectado
indica la dirección de memoria a la que quiere saltar mediante una etiqueta, en este caso Z No afectado
BUCLE. Si el bit de overflow (V) está activo, es decir a 1, entonces se salta a la dirección de V No afectado
memoria designada por la etiqueta BUCLE, en caso contrario se ejecuta la instrucción que C No afectado
sigue a la instrucción BVS que está siendo ejecutada.
Modos de direccionamiento: direccionamiento implicito.
72 73
Conjunto de condiciones:
CÓDIGO cc CONDICIÓN TEST
HI Salta si es superior (High) C • Z Sin signo
LS Salta si es Inferior o igual (Low) C + Z Sin signo
CC Salta si el bit de acarreo está a 0 C=0 Sin signo
CS Salta si el bit de acarreo está a 1 C=1 Sin signo
NE Salta si no son iguales Z=0 -
EQ Salta si son iguales Z=1 -
VC Salta si el bit de overflow está a 0 V=0 -
VS Salta si el bit de overflow está a 1 V=1 -
PL Salta si es positivo N=0 Con signo
MI Salta si es negativo N=1 Con signo
GE Salta si es mayor o igual N V+N V Con signo
LT Salta si es menor N V+N V Con signo
GT Salta si es mayor N V Z+N V Z Con signo
LE Salta si es menor o igual Z+N V+N V Con signo
F Falso siempre
T Verdadero siempre
Ejemplo:
MOVE #99,D5
BUSCAR TST.W (A2)+
DBMI D5,BUSCAR
TST.B D5
BMI NO_HAY
En este ejemplo buscamos en una lista de 100 números almacenados en memoria el primer
número que es negativo. La dirección inicio de la lista se almacena en el registro A2. Con este
código vamos recorriendo la lista hasta llegar, bien al número negativo, o hasta recorrer la lista
entera si haberlo encontrado, en este caso se ejecuta la instrucción BMI NO_HAY.
74

También podría gustarte