
La memoria principal de este computador está formada por celdas
de un byte (8 bits), que constituyen la unidad básica de lectura
o escritura, identificándose mediante una dirección.
Los procesos de lectura y escritura pueden realizarse con varias celdas
consecutivas simultáneamente, debiendo indicar el procesador a la
memoria principal dos parámetros, la dirección de la primera
celda de memoria y la longitud de la información a la que se desea
acceder. Siendo esta longitud de un byte, dos bytes (una palabra) o cuatro
bytes (palabra larga).
El tamaño máximo de la memoria viene determinado por el número
de bits de los registros de direcciones que tiene el procesador, siendo
en el caso del Motorola 68000 de 32 bits pero, debido a limitaciones en
el montaje solo pueden utilizarse 24 como máximo, así que
la máxima longitud que se puede usar de la memoria principal es
de 224 bytes,
desde 0 hasta FFFFFF .
El
procesador puede leer y escribir información de diferentes tamaños,
existiendo una norma para almacenar las palabras (W) y las palabras largas
(L), y siendo esta la de comenzar por el byte más significativo.
Existen 7 registros de direcciones y son: A0, A1, A2, A3, A4, A5 y A6,
siendo estos de 32 bits aunque solo pudiendose utilizar 24 bits para direccionar
como antes se ha mencionado.
2.-
Registros de Datos
El Motorola 68000 consta de 8 registros de datos, que son D0, D1, D2, D3,
D4, D5, D6 y D7. Cada uno consta de 32 bits. En muchas instrucciones existe
la posibilidad de especificar el tamaño del dato, indicándose
este mediante el sufijo S (B, W y L), que va añadido al nemotécnico
de la instrucción.
La forma en que se almacenan los datos en los registros, viene dada por
su longitud, ya que como esta es variable, irán ocupándolos
de izquierda a derecha empezando por el bit menos significativo del registro.
3.-
Modos de Direccionamiento
Existen cuatro modos de direccionamiento:
2.-
Direccionamiento absoluto: almacena el operando que está en
la dirección de memoria especificada en el registro de datos indicado.
Ejemplo:
ADD.W %000000001000111110001,D2 suma la palabra que está en la dirección
de memoria indicada, a D2.
3.- Direccionamiento mediante registro: apunta a la dirección del registro donde está el dato. Ejemplo: MOVE.B D3,D4 copia el contenido del registro D3 (byte) a D4.
4.- Direccionamiento relativo a registro:
b)
Direccionamiento relativo a registro con posincremento: incrementa
en una cantidad de memoria, según sea el tamaño del operando
(1 para B, 2 para W y 4 para L), después de traer el contenido de
la posición de memoria indicada por el registro de direcciones.
Ejemplo:
MOVE.W (A0)+,D0 copia en D0 el contenido de la posición de memoria
direccionada por A0 y luego incrementa en 2 el contenido de A0.
c)
Direccionamiento relativo a registro con predecremento: Decrementa
en una cantidad de memoria, según sea el tamaño del operando,
el registro de direcciones y trae despues el contenido de la posición
de memoria cuya dirección es el nuevo valor de dicho registro.
Ejemplo:
MOVE.B -(A0),D0 decrementa en uno el contenido del registro A0 y
luego copia en D0 el contenido de la nueva posición de memoria direccionada
por A0.
d)
Direccionamiento relativo a registro con desplazamiento: El contenido
de la posición de memoria cuya dirección viene dada por la
suma del valor del registro de direcciones y una cantidad fija denominada
desplazamiento, pudiendo ser este positivo o negativo y su valor viene
condiciondo por el tamaño del operando.
Ejemplo:
MOVE.L N(A0),D1 copia en el registro D1 el contenido de la posición
de memoria cuya dirección viene dada por la suma de N multiplicado
por 4(L) al contenido de A0.
e)
Direccionamiento relativo a registro con índice: Este modo de
direccionamiento es la extensión natural del anterior, ya que permite
usar desplazamientos variables, utilizando como desplazamiento el resultado
de sumar un número fijo al contenido de un registro de datos denominado
registro índice.
Ejemplo:
MOVE.B 4(A0,D1), D0 copia en el registro D0 el contenido de la posición
de memoria cuya dirección es el resultado de sumar el número
4, el contenido del registro A0 y el contenido del registro D1. Este modo
de direccionamiento no altera el registro de direcciones ni el registro
índice.
f)
Direccionamiento relativo al contador de programa con desplazamiento:
Cuando es necesario hacer referencia a un operando relativo
a la posición de la proxima instrucción que va a ser ejecutada.
Ejemplo:
MOVE.B 24(PC),D0 copia en el registro D0 el contenido de la posición
de memoria cuya dirección es la suma de 24 y el valor del contador
del programa.
g)
Direccionamiento relativo al contador de programa con índice:
Utiliza como desplazamiento el resultado de sumar un número fijo
al contenido de un registro de datos.
Ejemplo:
MOVE.B 24(PC,D0),D1 copia en el registro D1 el contenido de la posición
de memoria cuya dirección es el resultado de sumar el número
24, el contador de programa y el contenido del registro D0.
Al realizar operaciones matemáticas existe la posibilidad de desbordamiento,
por lo que se realiza un test automáticamente, quedando el
resultado almacenado en un registro de control, dedicado especialmente
a tal efecto, denominado registro de código de condición
(CCR), pudiendose leer mediante la instrucción MOVE. Este registro
consta de 5 flags que se almacenan en los 5 bits menos significativos del
registro de estado (SR).
Estos
5 bits tienen las siguientes denominaciones, ordenadas desde el bit menos
significativo:
- C indicador de acarreo o carry flag: indica el valor del
bit de acarreo de la posición más significativa del
resultado de una operación, poniendose a 1 si existe desbordamiento.
- V indicador de desbordamiento o overflow flag: indica si en el
resultado de una operación en complemento a 2 existe desbordamiento,
poniendose a 1.
- Z es el indicador de cero o zero flag, poniendose a 1 cuando sea
0 el resultado de una operación aritmetica o lógica.
- N es el indicador de número negativo o negative flag, poniendose
a 0 si es positivo y a 1 si es negativo el signo del resultado de una operación
en complemento a 2.
- X es el indicador extendido o extended flag que funciona de la
misma manera que C, pero unicamente con operaciones aritméticas
o de desplazamiento.
6.-
Entrada/Salida
Los computadores disponen de
unos registros especiales, denominados puertos de E/S o I/O en inglés
para poder comunicarse con el exterior. El Motorola 68000 consta de tres
puertos de este tipo en las siguientes direcciones de memoria:
- FFF000 de E
- FFF002 de S
- FFF004 de E/S
Una subrutina es un conjunto de instrucciones que realizan una tarea concreta,
que no puede ser ejecutada directamente sino que debe ser llamada por un
programa principal. Esta subrutina denominada también subprograma,
procedimiento o simplemente rutina se comienza a ejecutar cuando es llamada
por el programa principal, desde la primera instrucción. Cuando
se ha llegado a la última instrucción, se vuelve a ejecutar
la siguiente instrucción del programa principal anterior a la invocación
de la subrutina.
La gestión de las subrutinas se realiza mediante una estructura
de almacenamiento de tipo de pila. El espacio en memoria que se reserva
para la pila se define a partir de dos direcciones, la dirección
de la posición inicial o fondo de la pila y la dirección
de la posición máxima permitida o valor máximo que
puede alcanzar la cima de la pila.
El puntero de pila indica la posición de la cima de la pila, utilizando
un registro de direcciones denominado SP (stack pointer) y que es el A7.