TODOPIC

Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: julio_med en 13 de Septiembre de 2007, 23:45:55

Título: llamada de un .asm desde otro .asm
Publicado por: julio_med en 13 de Septiembre de 2007, 23:45:55
hola

tengo una duda
lo que deseo hacer es desde un programa llamado tesis.asm hacer un llamado de otro .asm; por decir teclado.inc.

cuando "tesis.asm"lo estoy simulando y llaga al a la instruccion que llama al otro progragrama, lo ejecuta perfectamente, pero cuando deseo volver al primer programa(tesis.am) se resetea este y pierdo informacion previamente guardada

¿este es el funcionamiento correcto?....¿hay alguna forma de que retorne exactamente donde iba como si se tratara de un call o una macro????

grasias
Título: Re: llamada de un .asm desde otro .asm
Publicado por: maunix en 14 de Septiembre de 2007, 13:29:00
¿este es el funcionamiento correcto?....¿hay alguna forma de que retorne exactamente donde iba como si se tratara de un call o una macro????

No, no es el funcionamiento correcto, evidentemente algo hay ahí que no está bien hecho.

Podrías hacer un goto a la línea próxima siguiente desde el 'otro programa' pero esa es una solución bastante poco elegante.

La única forma elegante que se me ocurre es que uses el CALL , ¿porqué no lo usas?
Título: Re: llamada de un .asm desde otro .asm
Publicado por: riberofernando en 14 de Septiembre de 2007, 13:38:08

cuando "tesis.asm"lo estoy simulando y llaga al a la instruccion que llama al otro progragrama, lo ejecuta perfectamente, pero cuando deseo volver al primer programa(tesis.am) se resetea este y pierdo informacion previamente guardada


De que manera "llama" al otro programa...CALL ??? GOTO???...Podrías poner esa parte del código y también las ultimas lineas del programa del que debe retornar para que lo veamos y así poder ayudar
Título: Re: llamada de un .asm desde otro .asm
Publicado por: julio_med en 16 de Septiembre de 2007, 13:30:28
bueno amigos yo estoy llamando  el otro programa asi

NOP   
INCLUDE <ENSAYO.INC>

y en el otro programa

org  0a00
goto inicio

ininio
banksel portb
movlw b'00000000'
ect                              aqui le pongo a hacer cualquier cosa, igual es solo un ensayo

y cuando termina le pongo return y se devuelve pero al inicio del primer programa asi que me borra cualquier info guardada en cualquier registro

Título: Re: llamada de un .asm desde otro .asm
Publicado por: julio_med en 16 de Septiembre de 2007, 13:54:16
bueno panas

cuando intento llamar el programa con un CALL o UN GOTO me saca Symbol not previously defined (#INCLUDE)
Symbol not previously defined (ENSAYO.INC)

si la hago asi
call #include ensayo.inc
goto #include ensayo.inc

o

call ensayo  o call ensayo.inc  o  lo mismo con el goto

y si lo intento definir  asi:#DEFINE OTRO   INCLUDE ENSAYO.INC
para hacer la llamada asi CALL OTRO
igual me saca error


Título: Re: llamada de un .asm desde otro .asm
Publicado por: maunix en 16 de Septiembre de 2007, 17:29:22
julio_med en assembler se usa include solamente sin el #.
También fijate de agregarle comillas al archivo .inc.
Revisa si es eso. 
Título: Re: llamada de un .asm desde otro .asm
Publicado por: julio_med en 17 de Septiembre de 2007, 13:29:16
maunix:

si uso la llamada de esta manera:   INCLUDE "ENSAYO.INC". La simulacion me sigue generando el mismo problema; ahora si utilizo comillas sencillas me saca este error Cannot open file (Include File "'ENSAYO.INC'" not found)

copie este archivo en la carpeta MPASM SUIT de el mplab osea donde estan todos los .INC  que utilizamos para no tener que definir todas las variables del pic y mas sin embargo me sigue diciendo que no encuentra el archivo

que puedo hacer??????
Título: Re: llamada de un .asm desde otro .asm
Publicado por: maunix en 17 de Septiembre de 2007, 14:51:41
si uso la llamada de esta manera:   INCLUDE "ENSAYO.INC". La simulacion me sigue generando el mismo problema; ahora si utilizo comillas sencillas me saca este error Cannot open file (Include File "'ENSAYO.INC'" not found)
Es con comillas dobles.


copie este archivo en la carpeta MPASM SUIT de el mplab osea donde estan todos los .INC  que utilizamos para no tener que definir todas las variables del pic y mas sin embargo me sigue diciendo que no encuentra el archivo

No es necesario para nada, es más, tampoco recomiendo poner tus propios .inc en donde están las declaraciones de registros de todos los pics del MPASM.

¿puedes subir el error que te da? ¿el archivo está en la misma carpeta que el .asm?

que puedo hacer??????

Incluir un .inc es como si "copiaras y pegaras" el código en el lugar donde hayas hecho el include.  Eso hace que por ejemplo el .inc bajo ningún punto de vista debe tener un 'end' . ojo con eso

Al instarar el MPASM este te creo las variables de entorno PATH ?

Si sigues con problemas, postea los mensajes que te da el MPASM al querer ensamblar o bien sube el proyecto con sus archivos en un .zip así lo podemos mirar más en detalle


Saludos
Título: Re: llamada de un .asm desde otro .asm
Publicado por: julio_med en 17 de Septiembre de 2007, 23:11:47
MAUNIX:

amigo ya funciona, tenias razon con lo de el END en el sugundo programa (ensayo.inc) osea al que estoy llamando desde tesis.asm
pero mas sin embargo en el segundo programa NO debe ir un ORG XXX para cuando termine el segundo programa pueda retornar justo donde iba; como vos decia "cortar y pegar"
asi que la llamada la estoy haciendo: INCLUDE "ENSAYO.INC"  y dentro de ensayo:

ej:
   LIST P=16F877A
   #INCLUDE <P16F877A.INC>
                                         
               aqui no se necesita definir los registros de nuevo ya que los toma  de el primer programa en mi caso tesis.asm

      BANKSEL   TRISB
      MOVLW     00H
      MOVWF    TRISB
      BANKSEL PORTB
      CLRF       PORTB
      
BUCLE       BSF          PORTB,7
      CLRF       PORTB
      MOVLW   10H
      MOVWF   PROG_CHOOSER

  para poder salir de ENSAYO solo dejamos que acabe las instrucciones para que haga el cambio automatico a tesis.asm y continue normalmente, no requiere return.

AMIGOS GRASIAS LA AYUDA SIRVIO MUCHISIMO
Título: Re: llamada de un .asm desde otro .asm
Publicado por: maunix en 18 de Septiembre de 2007, 08:58:52
AMIGOS GRASIAS LA AYUDA SIRVIO MUCHISIMO

Me alegro que te haya funcionado y mucho más me alegro que hayas comprendido de qué se trata el include en asm.

Saludos