Autor Tema: tablas en asembler  (Leído 3659 veces)

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

Desconectado liminix

  • PIC12
  • **
  • Mensajes: 58
tablas en asembler
« en: 30 de Agosto de 2008, 22:41:43 »
hola mis estimados  amigos recien me estoy iniciando en emsamblador por eso la duda que tengo ,bueno mi duda acerca de las tablas como es su fucionamiento es que no entiendo eso sumar el pc(contador de programa),con W(registro trabajo) me pueden dar un ejemplo y luego una pequeña explicacion

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: tablas en asembler
« Respuesta #1 en: 30 de Agosto de 2008, 23:05:45 »
Hola Liminix, mira aqui, hay algo de tablas, tambien está tratado en el foro (emplea el buscador), y luego, si sigues con dudas, vuelve a consultar ok?
http://www.todopic.com.ar/foros/index.php?topic=6002.0

Suerte con el .asm!

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

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

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: tablas en asembler
« Respuesta #2 en: 31 de Agosto de 2008, 05:05:15 »
Aquí tienes un pequeño ejemplo de cómo cargar W con un dato de una tabla: SELECCIONAR un BYTE mediante su OFFSET
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: tablas en asembler
« Respuesta #3 en: 31 de Agosto de 2008, 12:16:11 »
Hola te pongo un ejemplo súper sencillo que me enseñaron hace unos días. Cómo elevar al cuadrado una cantidad usando tablas.

Código: [Seleccionar]
            MOVLW 03
            CALL TABLA
            MOVLW 05
            CALL TABLA
           
TABLA       ADDWF PCL,F
            RETLW 0
            RETLW 1
            RETLW 4
            RETLW 9
            RETLW 16
            RETLW 25


Lo que contiene W apunta a un valor que tiene la tabla.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: tablas en asembler
« Respuesta #4 en: 31 de Agosto de 2008, 15:25:40 »
Haz caso a lo que te dicen estos tres amigos que te contestaron, porque te aseguro que saben lo que dicen,
Por lo que posteas en la pregunta deduzco que no sabes el porque se le suma el "pcl", eso es porque el "pcl" contiene la direccion donde esta ubicada la tabla, de este modo la puedes ubicar en cualquier posicion.
Aqui en el almacen del asembler tambien tienes un par de ejemplos, hechos por Maunix, que tambien te ayudaran a entenderlo.

suerte Tapi8

Desconectado LeSs

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 81
Re: tablas en asembler
« Respuesta #5 en: 05 de Septiembre de 2008, 23:39:01 »
Compañeros,

El manejo de tablas siempre es un problema, creanme q si que me dio dolores de cabeza. Pero llego la solución... Un micro de la serie 18FXXX, no dormi la noche en la que comence a programar con estos micros, me envicie en ver lo facil q se hacian el manejo de las tablas, pero claro queda a criterio personal el uso del mismo. Adjunto una animación que hice en un LCD alfanumerico de una barra de carga, claro se utilizan macros que facilitan la programación como no tienen idea.

Saludos.
El hambre produce poemas inmortales. La abundancia únicamente indigestión y torpezas.
Aprendiendo a programar en C.

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: tablas en asembler
« Respuesta #6 en: 06 de Septiembre de 2008, 10:05:15 »
Ja, me encantó esta tabla
Código: ASM
  1. Mensaje1
  2.         DB      "SALUDOS!", 0x00
  3. Mensaje2
  4.         DB      "FORO TODO-PIC", 0x00
  5. Mensaje3
  6.         DB      "DESDE ECUADOR", 0x00
  7. Mensaje4
  8.         DB      "L.e.S.s", 0x00
  9. Mensaje5
  10.         DB      "Por q este Pry", 0x00
  11. Mensaje6
  12.         DB      "con Oscilador d", 0x00
  13. Mensaje7
  14.         DB      "4MHz NoFunciona?", 0x00
  15. FinMensajes

Además, ¿me podrían explicar como utilizar este tipo de tablas? Entiendo como funciona, cuando se llama al mensaje 5 apunta a la línea DB y lee lo que está entre comillas, o sea, que vuelve a esta línea, tantas veces como caracteres tenga, pero no se si hay que utilizar algo en especial para utilizar este tipo de tablas.

Y una cosita más, este tipo de tablas ¿solo se utiliza en la familia 18F?

Gracias.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado Javicho

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 570
Re: tablas en asembler
« Respuesta #7 en: 06 de Septiembre de 2008, 10:44:13 »
Ese tipo de tabla se usa en cualquier familia de pic, y hasta incluso yo lo hago asi:

Mensajes  addwf  PCL,f
DT  "SALUDOS!", 0x00
DT  "FORO TODO-PIC", 0x00
DT  "DESDE ECUADOR", 0x00
DT  "L.e.S.s", 0x00
DT  "Por q este Pry", 0x00
DT  "con Oscilador d", 0x00
DT  "4MHz NoFunciona?", 0x00

Llamas a la tabla y de cada linea se sale cuando encuentras el "0" (0x00) pero tienes que conocer el offset de inicio por linea. Cuando se trata de mandar mensajes a un lcd de 2x16 es facil porque el offset siempre avanza 16 posiciones + el 0.

Javicho.

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: tablas en asembler
« Respuesta #8 en: 06 de Septiembre de 2008, 12:19:18 »
No entiendo lo del offset

¿A lo que te refieres es que no puedo exederme de 16 caracteres por línea?
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado liminix

  • PIC12
  • **
  • Mensajes: 58
Re: tablas en asembler
« Respuesta #9 en: 08 de Septiembre de 2008, 19:46:45 »
hola mis estimados amigos como siempre cuento con uds para eliminar cualquier dudagracias por el link que me pusieron alli pude leer sobre la duda que tenia y mas
gracias cualquier dudita acerca de otros temas se los pregunto gracias por su atencion :-/ :D

Desconectado Javicho

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 570
Re: tablas en asembler
« Respuesta #10 en: 09 de Septiembre de 2008, 12:11:36 »
No entiendo lo del offset

¿A lo que te refieres es que no puedo exederme de 16 caracteres por línea?

Bueno aca hay una aclaración, el mensaje "SALUDOS!" solo tiene 8 caracteres y los demas mensajes tienen longitud de caracteres variable, yo uso mas bien longitud fija de 16 caracteres por mensaje (refiriendome siempre a enviar mensajes a un LCD2x16) entonces el mensaje "SALUDOS!" lo cambiaria a "    SALUDOS!    " asi te complicas menos y lo que ves en pantalla es exactamente como lo veras tambien en el LCD .. centrado.

Todo depende de como está enfocado el desplazamiento de tus mensajes, por ejemplo:

Mensajes  addwf  PCL,f
DT  "    SALUDOS!    ", 0x00         ;offset de inicio de linea = 0
DT  "  FORO TODO-PIC ", 0x00     ;offset de inicio de linea = 17

... la linea 1 tiene 16 caracteres (offset de 0 al 15) luego sigue el "0x00" (offset 16) y ahora viene la siguiente linea (offset de inicio de linea es 17), a eso me refiero con el offset (desplazamiento), tu programa debe llamar a Mensajes inicializas tu variable Offset=0, lees el 1er caracter y lo envias al LCD ahora preguntas si el caracter es 0, si no lo es incrementas el offset+1 y vuelves a llamar a Mensajes ahora te retorna con el siguiente caracter y asi sucesivamente terminas cuando encuentres el 1er 0 de la primera linea.

Para mostrar ahora la 2da linea envias el comando al lcd para colocar el puntero en la segunda linea y haces el mismo procedimiento anterior pero esta vez inicias con offset=17 y listo.

Espero se haya entendido algo (aunque no lo creo) pero sobre este asunto hay bastante info en la red asi que tienes que hacer tus pruebas asi te daras cuenta.

Javicho.

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: tablas en asembler
« Respuesta #11 en: 09 de Septiembre de 2008, 13:59:10 »
Si, ahora me quedó aclarada la duda.  :-/
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.


 

anything