Diferencia entre revisiones de «Registros del CPU - MC9S08QE128»

De Wikitronica
Saltar a: navegación, buscar
Línea 104: Línea 104:
  
 
Durante el Reset, el registro PC se carga con la dirección contenida en el vector de interrupción del reset, que se debe de haber indicado a partir de la dirección FFFE que corresponde a la dirección del vector de interrupción. Este vector contiene la dirección de la primera instrucción a donde debe regresar el programa luego de producirse el reset.  
 
Durante el Reset, el registro PC se carga con la dirección contenida en el vector de interrupción del reset, que se debe de haber indicado a partir de la dirección FFFE que corresponde a la dirección del vector de interrupción. Este vector contiene la dirección de la primera instrucción a donde debe regresar el programa luego de producirse el reset.  
 +
 +
 +
 +
 +
  
 
== Registro CCR ==
 
== Registro CCR ==
Línea 110: Línea 115:
  
  
 +
 +
[[Image:CCR.png|thumb|638px| center]]
  
  
  
 
<sup></sup>
 
<sup></sup>

Revisión del 19:57 25 mar 2013

Registros del CPU.png

Introducción

Un registro es una memoria de alta velocidad, que se utiliza en los microprocesadores para acceder a información importante de manera rápida. Generalmente, los registros se miden de acuerdo al número de bits que almacenan, (por ejemplo, registros de 8 bits o de 16 bits) y pueden contener datos, direcciones de memoria o información acerca del estatus del sistema.


En el caso de los registros del CPU del MC9S08QE128, se refieren a los registros más importantes del CPU que tienes diferentes funciones. Algunos indican el estatus general del sistema así como otros guardan datos o direcciones importantes. Al realizar la simulación de un programa en CODEWARRIOR, podemos observar en un recuadro los datos que guardan estos registros, para tener una idea general de lo que está sucediendo en el DEMOQE. En este artículo mencionaremos cinco, que son los más importantes y los que más se utilizan al momento de programar.


Acumulador

El acumulador es un registro de propósito general de 8 bits, donde se guardan temporalmente datos con los cuales se ejecutará una operación lógica o aritmética por la ULA (Unidad Aritmético- Lógica) del CPU. Además, generalmente luego de ejecutarse estas operaciones, el resultado suele guardarse en el acumulador. Muchas instrucciones utilizan al acumulador como intermediario para ejecutar ciertas funciones. Así, se pueden cargar datos al acumulador desde direcciones de memoria, o también se puede guardar el dato contenido en el acumulador en alguna dirección.

Cabe destacar además que el reset no tiene ningún efecto sobre el acumulador.

Por ejemplo:


LDA  #$01         ; Se carga el número 01 en hexadecimal al acumulador
ADD  #$02         ; Se suma el número 02 en hexadecimal al valor en el acumulador y se guarda en el acumulador

STA  Suma         ; Se guarda el resultado en la variable "suma"

La mayoría de las instrucciones del DEMOQE utilizan al acumulador. Para saber en detalle cómo lo utilizan, se debe revisar el manual de instrucciones.



Registro H:X

El registro H:X es un registro de propósito general de 16 bits, que pueden ser tratados como dos registros separados, es decir, como un registro H y un registro X de 8 bits cada uno. El registro X almacena los 8 bits menos significativos, y el registro H los 8 bits más significativos. Todas las instrucciones de direccionamiento indexado utilizan este registro, ya que es útil para guardar direcciones de memoria por tratarse de un registro de 16 bits. Así, pueden direccionarse muchas más posiciones de memoria que con un registro de 8 bits. El registro X puede ser manipulado de muchas maneras dependiendo de la instrucción que se esté utilizando. Puede ser incrementado, decrementado, transferido al acumulador, entre otras.

El registro H:X es especialmente útil cuando se quiere manipular directamente una dirección de memoria, y realizar operaciones aritméticas o lógicas con ella.

Además, durante el reset se coloca el contenido del registro H en $00, pero no tiene ningún efecto sobre el registro X.

A continuación se mostrará un ejemplo de como realizar operaciones con el registro H:X


LDHX  #$00         ; Se carga el número 00 en hexadecimal al registro H:X
TXA                ; Se transfiere el valor del registro X al acumulador
ADD #$05           ; Se suma el valor 05 al acumulador
TAX                ; Transfiere el valor del acumulador al registro X

                   ; En el registro H:X se encuentra el valor binario %00000000 00000101 ($0005 en hexadecimal)

STHX  Memoria      ; Se guarda el resultado en la variable "suma"


Registro SP

El registro SP es un registro de 16 bits, que funciona como un apuntador a la próxima dirección disponible en donde se puede guardar un dato en la pila (stack). La pila, es un espacio de memoria muy útil para guardar las direcciones de memoria y los registros más importantes a donde debe regresar el CPU luego de una interrupción o de una llamada a subrutina (para más información ver el artículo Interrupciones.También se utiliza para guardar variables locales, o para realizar operaciones aritméticas. Existen muchas instrucciones que involucran al registro SP, para guardar o retirar datos de la pila, entre otras.


Uso de la pila y registro SP

La pila puede localizarse en cualquier parte de la memoria RAM, simplemente cambiando la dirección del registro SP. Es importante destacar que mientras los datos de memoria se van guardando desde menores a mayores direcciones de memoria, la pila guarda sus datos en sentido inverso, es decir, la pila va creciendo hacia menores direcciones de memoria. Por ello, se suele inicializar el registro SP al final de la memoria RAM. Así, se le da más espacio a la pila y se evitan incidentes de que se superpongan datos que se guardan en la pila con los datos que se van guardando en otras posiciones de la memoria RAM.


Un ejemplo de la inicialización de la pila es el siguiente:


LDHX   #RAMEnd + 1       ; Se carga en el registro H:X una etiqueta que corresponde al valor $17FF + $1 = $1800

TXS                      ; Se transfiere el contenido del registro H:X al registro SP



Registro PC

El registro PC (Program Counter), es un registro de 16 bits que indica la próxima instrucción que será ejecutada en la secuencia de un programa. Para hacer esto, en realidad este registro se carga con la dirección de la próxima instrucción a ser ejecutada.


Cuando se está ejecutando una instrucción de salto, una subrutina o una interrupción, el registro PC se carga con la próxima instrucción que se encuentra dentro de la subrutina o la interrupción que se va a ejecutar, mas no con la que se encuentra inmediatamente después de dicha interrupción. Por ello, es necesario guardar en la pila la información acerca de a dónde debe regresar el programa luego de ejecutarse la subrutina o interrupción. Para más información al respecto se recomienda revisar el artículo Interrupciones.

Durante el Reset, el registro PC se carga con la dirección contenida en el vector de interrupción del reset, que se debe de haber indicado a partir de la dirección FFFE que corresponde a la dirección del vector de interrupción. Este vector contiene la dirección de la primera instrucción a donde debe regresar el programa luego de producirse el reset.




Registro CCR

El registro CCR (Condition Code Register), es un registro de 8 bits que indica el estado del sistema luego de ejecutarse una instrucción, por ejemplo, si el resultado de una operación fue cero, negativo, si hubo desbordamiento, entre otras. A continuación se explicará lo que indica cada uno de los bits que integran este registro.


CCR.png


Contributors

JCaceres, Vegabante