Autor Tema: directiva DT  (Leído 7474 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado jaime_cr

  • PIC10
  • *
  • Mensajes: 11
directiva DT
« en: 13 de Julio de 2004, 18:59:00 »
 Hola alguien sabe explicarme mas o menos como funciona la directiva DT, en el manual dice que es para definir tablas, pues muy bien, pero no he entendido como hago para accesar cada uno de los campos de la tabla, por ejemplo:

Tabla1 DT "Un mensaje", 0

si yo hago call Tabla1, esto me retorna "U" en el W, pero ahora como hago para obtener los siguientes caracteres?.

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
RE: directiva DT
« Respuesta #1 en: 13 de Julio de 2004, 21:42:00 »
Hola, se emplea igual que una tabla formada por RETorne con Literal en W  retlw
seria por ejemplo

TABLA   ADDWF   PCL,F   
   DT "O123456789"   

en este caso te iria mostrando los valores de 0 a 9

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado adrian2a1

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 75
RE: directiva DT
« Respuesta #2 en: 14 de Julio de 2004, 09:42:00 »
Para simplificar el uso de las instrucciones retlw  el ensamblador MPASM facilita la directiva  DT  (Define Tabla) que sustituye el empleo repetitivo de muchas instrucciones  retlw. Su sintaxis es:

DT <expr> [, <expr>, …., <expr>]

Esta directiva genera durante la fase de ensamblado instrucciones retlw, una instrucción por cada  <expr>. Cada carácter de una cadena es almacenado en su propia instrucción  retlw.
Ejemplo:

   DT "MaR", 0x10, .15

Esta directiva genera las instrucciones:

   retlw    0x4D   ; (‘M’ en ASCII)
   retlw    0x61   ; (‘a’ en ASCII)
   retlw    0x52   ; (‘R’ en ASCII)
   retlw    0x10   ; (16 en decimal)
   retlw    0x0F   ; (15 en decimal)


Debes tener cuidado de situar todas las directivas DT dentro de las primeras 256 posiciones del programa para no tener problemas, de esta forma:


ORG  0x00
goto  Inicio

ORG 0x04
goto  Interrupcion    ; Aquí el salto a la subrutina de atención a la interrupción

Tabla1
addwf   PCL,F
DT .....           ;Aquí las directivas DT

Tabla2
addwf   PCL,F
DT .......

Inicio            ; Aquí el inicio real del programa

.....

movlw PosicionTal       ; Aquí recoge los valores de la tabla.
call Tabla1 ....
......

movlw PosicionCual
call Tabla2
....


Espero haberte ayudado.

Adrian.


 

anything