Muchas veces necesitas tener unos datos y que no varian,, vamos al ejemplo mas sencillo que se me ocurre.
Suponete que estas manejando un display 7 segmentos. Y supongamos que cada bit representa un segmento
// GFEDCBA Segments 7-segment map:
B00111111, // 0 "0" AAA
B00000110, // 1 "1" F B
B01011011, // 2 "2" F B
B01001111, // 3 "3" GGG
B01100110, // 4 "4" E C
B01101101, // 5 "5" E C
B01111101, // 6 "6" DDD
B00000111, // 7 "7"
B01111111, // 8 "8"
B01101111, // 9 "9"
Si lo pasamos a hexadecimal tenemos que desde el 0 es:
0x3F, 0x06, 0x5B, etc....
Si quisiera guardar esto en un microcontrolador, lo podria hacer en la RAM, pero esos datos nunca cambian por lo tanto no me sirve ocupar la RAM, y llevaria las cosas a la FLASH. Alli voy a indicarle al compilador que me guarde todos esos datos. No se como es la instruccion para los datos en flash pero vamos a suponer "DT"
SieteSegmento:
DT 0x3F, 0x06, 0x5B, 0x4F....
Entonces cuando yo haga el programa y tenga que mostrar el valor de una variable, expresados en BCD ( separados en unidades, decenas y centenas )
Solo me bastaria hacer:
LDX UNIDAD ; Unidad tiene un valor de la RAM, donde esta mi variable
LDA SieteSegmento, X ; Aca lo que haria es usar la direccion de la etiqueta que corresponde a la direccion del valor 0x3F y le sumo lo que hay en X.
Haciendo lo anterior, Si mi variable es 0 va a tomar el primer valor que es el 0x3F, si mi variable unidad era 2, va a tomar el 3er valor que es 0x5B.
De esa forma tengo una tabla, la cual tengo una BASE ( direccion de inicio - SieteSegmento ) y un offset dado por mi variable ( que se encuentra en los registros H:X )
Eso es a lo que me refiero como una tabla.
Tal ves el LDA 63636, X acceda a esa direccion y tengas realmente una tabla alli. Vos pensa que si el microcontrolador no va con su Program Counter ( PC ) por esos valores, entonces pueden tener cualquier significado. Siguiendo con el ejemplo. que pasaria si yo tengo una tabla con estos valores:
0xB6, 0xAC, 0xB7, 0xA3, .... etc...
Si uno hace un disasembly de este codigo el codgio resultante seguramente sea este:
B6AC LDA $AC
B7A3 STA $A3
Ahora parece que tuviera instrucciones, pero en realidad son valores fijos almacenados en la FLASH.
Con esto quiero llegar a que puede haber algunas instrucciones que no poseen sentido, y terminar siendo datos guardados en la flash.
Si el codigo fue generado con C, generalmente tienen una parte inicial que cargan todas las posiciones de memoria con ciertos valores, y esos valores iniciales estan almacenados en la FLASH. Por eso mismo te dije que busques la forma si es que te manejas mas con C, de hacer algun codigo con C y luego hacerle un disassembly asi poder comparar y al menos sabes que es lo que esta haciendo. Sin contar que C utiliza el stack bastante.
PD: Nunca trabaje con este nucleo ( HC08 ) pero no creo que le este errando tanto, no hay mucha diferencia entre un micro u otro.