Puntero de Pila (Stack Pointer)
El puntero de pila debe tener tantos bits como líneas de dirección; en el MC68HC705J1A significa que
el SP es un registro de 11-bits. Durante un 'reset' o una instrucción 'reset' del puntero de pila (RSP), el puntero
de pila se pone a 1 en la posición $00FF. Entonces, el puntero de pila se decrementa tanto como datos enviados
hacia la pila y es incrementado tanto como datos son sacados de la pila.
15
0
0
0
0
Algunos modelos del MC68HC05 permiten a la pila usar hasta 64 posiciones ($00FF a $00C0), pero las
versiones más pequeñas permiten sólo 32 bytes de pila ($00FF a $00E0). En el MC68HC705J1A, los cinco bits
más significativos (MSB) del SP son permanentemente puestos a 00011. Estos cinco bits se añaden a los seis bits
menos significativos para producir una dirección dentro del rango de $00FF a $00C0. Las subrutinas e
interrupciones pueden usar hasta 64 posiciones (en decimal). Si se excede de las 64 posiciones, el puntero de pila
sobreescribe la información previamente guardada en otros registros. Una llamada a subrutina, ocupa dos
posiciones en la pila; una interrupción usa cinco posiciones.
Modos de Direccionamiento
La potencia de cualquier microcontrolador está en su habilidad de acceder a la memoria. Los modos de
direccionamiento de la CPU proporcionan esta capacidad. Los modos de direccionamiento definen la manera en
la que una instrucción obtendrá los datos requeridos para su ejecución. Debido a los diferentes modos de
direccionamiento, una instrucción puede acceder al operando de seis maneras diferentes. De esta manera, los
modos de direccionamiento extienden las 62 instrucciones básicas de la familia MC68HC05 a 210 'opcodes'
distintos.
Los modos de direccionamiento usados, referente a la memoria son:
•=
Inherente
•=
Inmediato
•=
Extendido
•=
Directo
•=
Indexado sin desplazamiento, con desplazamientos de 8-bits y con desplazamientos de 16-bits
•=
Relativo
Las instrucciones inherentes no necesitan acceder a memoria, son aquellas instrucciones de un solo byte. En
el MC68HC05 más pequeño, toda la RAM y los registros de E/S están dentro del área de memoria $0000–$00FF
para que puedan usarse los dos bytes de las instrucciones en el modo de direccionamiento directo. El
direccionamiento extendido usa instrucciones de 3-bytes para alcanzar datos en cualquier parte del espacio de
memoria. Los varios modos de direccionamiento hacen posible localizar tablas de datos, código, tablas de
conversión y tablas escalares en cualquier parte del espacio de memoria. Accesos cortos indexados son
instrucciones de un solo byte, pero la instrucción más larga (tres bytes) permite acceder a tablas en cualquier
parte de la memoria.
En los párrafos siguientes se proporciona una descripción general con ejemplos de los varios modos de
direccionamiento. El término dirección efectiva (EA) se usa para indicar la dirección de memoria de donde se
ha leído o guardado el argumento para una instrucción. Para más detalles de los modos de direccionamiento y
para una descripción de cada instrucción, está disponible en el capítulo titulado Detalles del Juego de
Instrucciones .
La información proporcionada en los ejemplos de programa en lenguaje ensamblador, se usan varios
símbolos para identificar los varios tipos de números en los que se presentan en un programa. Estos símbolos
son:
1. Un espacio en blanco o ningún símbolo, indica un número decimal.
2. Un símbolo $ precedido de un número, indica que es un número hexadecimal; por ejemplo, $24 es 24 en
hexadecimal o el equivalente en decimal que es 36.
3. Un símbolo # , indica un operando inmediato y el número se encuentra en la posición que sigue al 'opcode'.
Una variedad de símbolos y expresiones se pueden usar inmediatamente después del carácter #. Puesto que no
7
0
0
0
0
1
1
Figura 29. Indicador de Pila (SP)
5
0
53
Puntero de Pila (SP)