68000

Registros 68000


Los registros que contiene el 68000 son en su práctica totalidad de 32 bits.
Estos de componen de:
8 Registros de datos de uso general D0-D7 32 bits
7 Registros de direcciones de uso general A0-A6 32 bits
1 Registro de direcciones usado como puntero de pila A7 32 bits
1 Registro de direcciones usado como contador de programa PC 32 bits
1 Registro de estado que contiene los códigos de condición y un byte de sistema SR 16 bits

Registros de datos: Dn
Los registros de datos se usan para almacenar aquellos datos que se van a manipular en las siguientes instrucciones del programa o subrutina en curso. Por otra parte, al tener una longitud de 32 bits, permiten trabajar en formatos de 32, 16 u 8 bits, según indique la instrucción.

Registros de direcciones: An
Los registros de direcciones se utilizan para referenciar posiciones de memoria donde se han de acceder datos o donde se ha nde escribir. Se ha de cuidar sin embargo el tipo de dirección que se pretende acceder según el formato (16, 32 bits) del operando. Cuando se utilizan como operando destino, todo el registro es modificado, independientemente del formato del la dirección, realizando extensión de signo.

Puntero a Pila: A7 - SP
El registro de pila, o puntero de pila, sirve para tener referenciada la posición de memoria en que se encuentra el último dato introducido en la pila.
La pila es un concepto muy importante y de conocimiento obligatorio.
El A7 sin embargo posee un rasgo único en él y es que se encuentra dividido en 2 registro independientes de 32 bits: uno es el puntero de usuario (USP) y el otro el de supervisor (SSP). Se accede automáticamente a un registro o a otro según el micro se encuentre en un modo u otro.

Contador de programa: PC
El registro de contador de programa apunta constantemente a la siguiente instrucción que va a ser ejecutada. En el caso del 68000, solo 24 de sus 32 bits se usan (ver bus de direcciones) y el la línea A0 indica por su parte si el dato con el que se está trabajando es un byte par (A0=0, activándose la línea /UDS), un byte impar (A0=1, activándose la línea /LDS) o bien una palabra (en cuyo caso se activan tanto /UDS como /LDS).

Registro de estado: SR
El registro de estado se subdivide en realidad en 2 bytes, cada uno ejerciendo una función bien distinta.
Por una parte, se encuentra en registro de códigos de condición (o CCR), que almacena unos biestables que permiten los saltos condicionales y otras instrucciones y que se encuentran en los 5 primeros bits del byte. Los otros 3 no se usan y siempre están siempre a 0.
Estos biestables de condición son:

76543210
000XNZVC

Acarreo, C:
Este bit se pone a 1 cuando se produce un acarreo a consecuencia de una instrucción.

Desbordamiento, V:
Este bit denota al ponerse a 1 que la última operación ha efectuado un desbordamiento en el dato.

Zero, Z:
Este bit indica que el último operando o resultado ha sido 0. Para ello se coloca a 1.

Negativo, N:
Indica el signo del último operando/resultado con 1 si ha sido negativo.

Extensión, X:
Se comporta como un bit de acarreo. En la mayoría de las instruuciones, un cambio en C implica el mismo cambio en X pero existen instrucciones en las que esto no ocurre.

Por otra parte se encuentra el byte del sistema, que contiene información vital para el funcionamiento del micro. Este byte solo puede ser modificado en modo Supervisor.

76543210
TSI2I1I0

Máscara de interruciones I2, I1, I0:
Almacena el nivel a partir del cual se atiende a una interrupción. Si el nivel de la interrupción entrante es mayor que el de la máscara, se atiende a esta. De otra forma se hace caso omiso de la petición.
Existe sin embargo el nivel 7 (111) que se denomina no enmascarable puesto que se atiende siempre. Existen pues 8 niveles de interrupción, de 0 a 7.

Supervisor, S:
Este bit indica que el micro se encuentra en modo Supervisor (1) o en modo Usuario (0).

Traza, T:
Permite la ejecución paso a paso de un programa, con vistas a la depuración de su código. Para ello se ha de poner el bit a 1.