Hola que tal, estoy programando el micro MC9S08JM60 de freescale en el programa CodeWarrior V 6.3. Estoy teniendo un problema en una parte de una pequeña rutina que está en asembler, está escrita en asembler por una cuestión de optimización y rapidez. Lo que debe hacer la rutina es tomar un valor de una variable llamada CONTADOR y con ese valor ingresar a una tabla donde debe buscar un valor, la variable contador varia entre 0 y 5, el tema es que cuando llega a la instrucción en que debe saltar a buscar en la tabla, me tira un error de que estoy buscando en una posicón de memoria que no está inicializada, y la posición que me da como error no es la posición en donde se encuentra la tabla, pero revizando los valores en memoria en hexa todo esta bien. Dejo algunas imagenes para que vean y me digan si ven algo extraño o si detectan algo fuera de lugar, gracias y saludos.
CODIGO
CODIGO
Código:
export symbols
XDEF asm_main
; Include derivative-specific definitions
INCLUDE 'derivative.inc'
; variable/data section
Mi_pagina_cero: SECTION SHORT
CONTADOR: DS.B 1
;Sección de código
MiCodigo: SECTION
asm_main: LDX CONTADOR
LDA TABLA,X
STA PTBD
RTS ; return to caller
TablaValores: SECTION
TABLA: DCB.B 1, $01 ;0 El valor es en hexadecimal
DCB.B 1, $44 ;1
DCB.B 1, $30 ;2
DCB.B 1, $21 ;3
DCB.B 1, $10 ;4
DCB.B 1, $07 ;5