Universidad Antonio Nariño

Aplicación Industrial de Micros
Código: 444405

CAPITULO 3
Técnicas en languaje ensamblador

3.2 Consulta a tablas
En muchas ocasiones es necesario para un programador efectuar una coincidencia entre alguna cantidad de valores conocidos y un número desconocido que se tiene como índice, por ejemplo, basados en el contenido de una posición de memoria RAM (índice) se puede obtener de una serie consecutiva de datos almacenados en memoria de programa (a estos datos "conocidos" almacenados se le denomina tabla), el dato desplazado n posiciones adelante del comienzo de esta tabla, este número n corresponde al contenido de la posición de memoria RAM ó índice.

Programa ejemplo:

offset    equ    0Ch    ;posición de memoria RAM
w          equ    0        ;destino W
f            equ    1        ;destino F
................
................
................
    movf      offset,w  ;tomamos a W el número n utilizado como índice
    call        tabla      ;posición en donde se encuentra la serie de datos
                               ;en este sitio luego del retorno de la subrutina se tiene en W el dato leído de la tabla
................
................
................
tabla
    addwf    PCL,f   ;se suma al PC el contenido de W obteniendo como resultado un salto indexado
    retlw        30h    ;sí el contenido de W sumado al PCL es 0 se retorna en esta posición, W=30h
    retlw        31h    ;sí el contenido de W sumado al PCL es 1 se retorna en esta posición, W=31h
    retlw        32h    ;sí el contenido de W sumado al PCL es 2 se retorna en esta posición, W=32h
    retlw        33h    ;sí el contenido de W sumado al PCL es 3 se retorna en esta posición, W=33h
    retlw        34h    ;sí el contenido de W sumado al PCL es 4 se retorna en esta posición, W=34h
    retlw        35h    ;sí el contenido de W sumado al PCL es 5 se retorna en esta posición, W=35h
    .                        ;...
    .
    .
Finalmente y luego de observar el ejemplo anterior, podemos anotar que antes de hacer el llamado a la subrutina tabla, se debe cargar en el registro de trabajo W el valor del índice y una vez se retorne de dicha subrutina, es en este mismo registro de trabajo en donde se obtiene el resultado de la consulta a la tabla (vemos que la sucesión de instrucciones retlw k se encuentra en memoria de programa).


  índice de capítulo