.-Direccionamiento y Formato de las instrucciones.
La codificación de instrucciones del 68000 contiene dos tipos de datos: la operación a realizar y la localización de los operandos. Esta localización de operandos puede hacerse de una de las tres siguientes formas: ‘Especificación de registro’. En la codificación de la instrucción hay un campo en el que se determina un número de registro. ‘Dirección efectiva’. Este sistema se verá detalladamente a continuación. ‘Referencia implícita’. Pordefinición de la operación a realizar está implícito el uso de determinados registros. Los 14 modos de direccionamiento se agrupan en seis tipos básicos: 1.-Direccionamiento directo a registro * Directo a registro de datos * Directo a registro de direcciones 2.- Direccionamiento absoluto * Absoluto corto * Absoluto largo 3.- Direccionamiento relativo al puntero de programa * Relativo con desplazamiento * Relativo con índice y desplazamiento 4.-Direccionamiento indirecto * Indirecto * Indirecto con postincremento * Indirecto con predecremento * Indirecto con índice y desplazamiento 5.- Direccionamiento inmediato * Inmediato * Inmediato rápido 6.- Direccionamiento implícito * Registro implícito
Modos de direccionamiento.
2.2.1- Formato de las instrucciones. La codificación de instrucciones puede ocupar desde una word hasta cinco. En la primera word se especifica la operación a realizar y el tamaño de los operandos. Cuando no se utiliza direccionamiento por dirección efectiva, la word de operación puede llevar también la especificación de registros. En caso de utilizar el método de dirección efectiva se necesitan otras words de extensión que en alguna ocasión pueden ser hasta cuatro.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
word de operación
( especifica la operación y el modo )
operando inmediato o extensión de dirección efectiva de origen
( si es necesario, una o dos words )
dirección efectiva del destino
( si es necesario, una o dos words )
Formato de las instrucciones
2.2.2- Dirección efectiva. La mayoría de los direccionamientos en el 68000 se realizan mediante el método de ‘dirección efectiva’. Este método consiste en codificar dentro de la word de operación el tipo de direccionamiento a usar según la pauta de la siguiente figura.
Codificación de la dirección efectiva
Codificación:
MODO DE DIRECCIONAMIENTO Notación MODO Registro
Directo por registro de datos. Dn 000 número
Directo por registro de direcciones An 001 número
Indirecto por registro de direcciones. (An) 010 número
idem con postincremento. (An)+ 011 número
idem con predecremento. -(An) 100 número
idem con desplazamiento. (d16,An) 101 número
idem con índice y desplazamiento. (d8,An,Xm) 110 número
Absoluto corto xxx.W 111 000
Absoluto largo xxx.L 111 001
PC con desplazamiento (d16,PC) 111 010
PC con indice y desplazamiento (d8,PC,Xn) 111 011
Inmediato #<dato>
111 100
Direccionamientos por dirección efectiva
2.2.3- Modos directos a registro. Estos modos especifican como operando uno de los 16 registros multifunción del 68000. El tamaño a utilizar de los mismos queda especificado en la word de operación.
Considérese como ejemplo la instruccion ADD.W <ea>,D3 que realizará la siguente suma con operandos de tamaño word : Dn + <ea> → Dn.
Que tiene como formato general
La codificación de esta instruccion a falta de decidir el modo de direccionamiento empleado para el operando fuente será
donde
• bits 15–12 indican el código de operacion para ADD (1101)
• bits 11–9 indican que el registro de datos D3 es el destino (3 =011)
• bits 8–6 indican el tamaño de operando (001 = WORD)
• bits 5–3 indicarán el modo de direccionamiento de la fuente
• bits 2–0 indicaran el registro(caso de ser necesario de la fuente).
2.2.3.1- Directo a registro de datos.
sería por ejemplo ADD.W D1,D3
El operando fuente es el registro de datos indicado en el código.
donde modo=000 indica un registro de datos y 001 indica que es D1
2.2.3.2- Directo a registro de direcciones.
sería por ejemplo ADD.W A1,D3
El operando fuente es el registro de direcciones indicado en el código.
donde modo=001 indica un registro de direcciones y 001 indica que es A1
2.2.4- Modos de direccionamiento de memoria. Estos modos especifican como operando una posición de memoria mediante diferentes cálculos para obtener la dirección de la misma. 2.2.4.1- Indirecto por registro de direcciones.
sería por ejemplo ADD.W (A0),D3
El operando se encuentra en memoria, en una posición cuya dirección se corresponde con el contenido del registro An.
donde modo=010 indica indirecto por registro de direcciones y 000 indica que es el registro A0
2.2.4.2- Indirecto con postincremento.
sería por ejemplo ADD.W (A0)+,D3
El operando se encuentra en memoria, en una posición cuya dirección se corresponde con el contenido del registro An. Una vez determinada dicha dirección se incrementa el contenido del registro An en 1, 2 ó 4 en función de la longitud de los operandos (byte, word ó long word respectivamente).
donde modo=011 indica indirecto por registro de direcciones y 000 indica que es el registro A0
NOTA: Si el registro es A7 (stack) y el tamaño de la operación es byte, el postincremento es de dos unidades para mantener el alineamiento en direcciones pares del stack. El byte queda almacenado en la dirección par, dejando sin significado el contenido de la dirección impar inmediatamente siguiente. 2.2.4.3- Indirecto con predecremento.
sería por ejemplo ADD.W -(A0),D3
Se comienza por decrementar el contenido del registro An en 1, 2 ó 4 en función de la longitud de los operandos (byte, word ó long word respectivamente). A continuación se considera que el operando se encuentra en memoria, en una posición cuya dirección se corresponde con el contenido del registro An.
donde modo=011 indica indirecto por registro de direcciones y 000 indica que es el registro A0
NOTA: Si el registro es A7 (stack) y el tamaño de la operación es byte, el predecremento es de dos unidades para mantener el alineamiento en direcciones paresdel stack. El byte queda almacenado en la dirección impar inmediatamente siguiente. 2.2.4.4- Indirecto con desplazamiento.
ADD 4(A0),D3
Al contenido del registro An se le suma un entero de 16 bits previamente extendido a 32, que debe encontrarse en la primera word de extensión (detrás de la word de operación). El resultado de dicha operación es la dirección de memoria que determina el operando. 2.2.4.5- Indirecto con índice y desplazamiento.
El formato de la instrucción sería
donde
• Rn es el numero de registro empleado como indice
• (1) Indica el tipo de registro indice , = registro de datos y 1 registro de direcciones
• (2) Indica el tamaño del registro empleado como indice , 0 = WORD, 1 = LONG,
• Desplazamietno de 8 bits. ( es un numero en complemento a 2)
Como por ejemplo : ADD 4(A0,D6),D3
Al contenido del registro An se le suma un entero de 8 bits previamente extendido a 32, que debe encontrarse en la primera word de extensión (detrás de la word de operación). A continuación, al resultado obtenido se le suma el registro índice (también codificado en la word de extensión). Si el registro índice está tomado en tamaño word, es extendido a 32 bits con anterioridad a la suma. Finalmente el resultado de ambas sumas es la dirección de memoria que determina el operando.
La operación realizada sería la suma siguiente:
o también puede ser ADD 4(A0,D6.L),D3
2.2.5- Modos especiales de direccionamiento. Estos modos de direccionamiento no se basan en la utilización de registros. 2.2.5.1- Direccionamiento absoluto corto.
por ejemplo ADD ETIQUETA,D3
donde modo=111 indic modo especial y 000 indica que la direccion especificada en la etiqueta cabe en un WORD.
Este modo de direccionamiento se basa en una word de extensión de la que se obtiene la dirección del operando una vez que se le ha extendido el signo hasta 32 bits. Por tanto este direccionamiento se puede utilizar dentro de los 32 kbytes primeros de la memoria (0000–7FFF) y dentro de los 32 kbytes finales (FF 8000?-FFFFFF).
2.2.5.2- Direccionamiento absoluto largo.
por ejemplo ADD ETIQUETA,D3
donde modo=111 indic modo especial y 001 indica que la direccion especificada en la etiqueta cabe en un LONG.
Este modo de direccionamiento utiliza dos words de extensión de las que se obtiene la dirección del operando por concatenación, situando la primera como parte alta de la dirección y la segunda como parte baja. 2.2.5.3- Indirecto por PC con desplazamiento. Al contenido del puntero de programa (program counter) se le suma un entero de 16 bits previamente extendido a 32, que debe encontrarse en la primera word de extensión (detrás de la word de operación). El resultado de dicha operación es la dirección de memoria que determina el operando. La dirección que contiene el puntero de programa al tomar su contenido para hacer la suma es la de la word de extensión. 2.2.5.4- Indirecto por PC con índice. Al contenido del contador de programa (program counter) se le suma un entero de 8 bits previamente extendido a 32, que debe encontrarse en la primera word de extensión (detrás de la word de operación). A continuación, al resultado obtenido se le suma el registro índice (también codificado en la word de extensión). Si el registro índice está tomado en tamaño word, es extendido a 32 bits con anterioridad a la suma. Finalmente el resultado de ambas sumas es la dirección de memoria que determina el operando. La dirección que contiene el puntero de programa al tomar su contenido para hacer la suma es la de la word de extensión.
El formato de la instrucción tiene la misma estructura que la explicada con anterioridad el el direcionamiento indirecto con índice y desplazamiento.
2.2.5.5- Dato inmediato. Con este tipo de direccionamiento el operando se encuentra en una o dos words de extensión, dependiendo de la longitud de la operación. Si la operación es de byte se utiliza una word de extensión cuyos bits 0–7 son el operando y los 8–15 se ponen a cero. En el caso de una operación de tamaño word se utiliza también una sola word y toda ella es el operando. Por último, en el caso de un tamaño de operación long word, el operando se forma por concatenación de dos words de extensión; la primera es la parte alta (bits 16–31) y la segunda la parte baja (bits 0–15). Por ejemplo ADDI #7,D3
El formato general de esta instrucción es
que en el caso del ejemplo es
Un caso particular es el direecionamiento inmediato rápido
ADDQ #7,D3
con el siguiente formato general
que se reduce por tanto a
2.2.6- Direccionamiento implícito. Algunas instrucciones llevan implícito el uso de determinados registros. Estas son las siguientes:
Mnemónico Instrucción Registros afectados
Bcc, BRA Salto condicional e incondicional PC
BSR Salto a subrutina PC, SP
CHK Chequeo de registros entre límites SSP, SR
D Bcc? Test de condición, decremento y salto PC
DIVS División con signo SSP, SR
DIVU División sin signo SSP, SR
JMP Salto PC
JSR Salto a subrutina PC, SP
LINK Encadena y reserva espacio SP
MOVE CCR Mover los códigos de condición SR
MOVE SR Mover el registro de estado SR
MOVE USP Mover el apuntador de pila de usuario USP
PEA Apilar la dirección efectiva SP
RTE Retorno de una excepción PC, SP, SR
RTR Retorno restablecido códigos condición PC, SP, SR
RTS Retorno de subrutina PC, SP
TRAP Trap SSP, SR
TRAPV Trap si hay rebose SSP, SR
UNLK Desencadenar SP
EDITADO POR EL CABALLO DEL TEC DE VILLAHERMOSA