Aunque físicamente no son implementados en las localidades de la SRAM, esta
memoria provee gran organización flexible para el acceso a estos registros,
como los registros punteros X, Y y Z que se usan como índices de cualquier
archivo de registro.
El registro X, el registro Y y el registro Z
Los registros R26... R31 tienen algunas funciones adicionales para uso de
propósito general. Estos registros son punteros de 16 bits de dirección para
direccionar indirectamente al espacio de datos.
Los tres registros de direccionamiento indirecto X, Y y Z están definidos como
se muestra en la figura siguiente.
Figure 6-3. Los registros X, Y y Z
En los modos de direccionamiento directo estos registros de dirección tienen
desplazamientos fijos, incrementos y decrementos automáticos.
6.5 Puntero de Pila (Stack Pointer)
El Stack–Pointer es usado para almacenar información temporal, para
almacenar variables locales y para almacenar direcciones de regreso después de
una interrupción o llamado de subrutinas.
Los registros del Puntero de Pila siempre apuntan a la parte superior de la pila.
Note que la pila es implementada como un crecimiento desde la localidad más
alta a la localidad mas baja de la memoria. Esto implica que un comando PUSH
decrementa el Puntero de Pila.
El puntero de pila para la SRAM es el área donde las interrupciones y
subrutinas son localizadas. Estos espacios de pila en los datos de la SRAM
deben ser definidos por el programa antes de que cualquier llamado de
subrutina sea ejecutado o una interrupción sea habilitada.
El puntero de pila debe estar por encima de la localidad 0x0100. El valor inicial
del puntero de pila es la última dirección de la SRAM interna. El puntero de
pila es decrementado a uno cuando los datos presionan en la pila con la
instrucción PUSH, y este es decrementado por tres cuando los datos llenan la
pila con un regreso desde una subrutina RET o de regreso desde una
interrupción RETI.