Registros del CPU - MC9S08QE128
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"