Autor Tema: llamada de un .asm desde otro .asm  (Leído 3826 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado julio_med

  • PIC10
  • *
  • Mensajes: 13
llamada de un .asm desde otro .asm
« 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

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: llamada de un .asm desde otro .asm
« Respuesta #1 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?
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado riberofernando

  • PIC10
  • *
  • Mensajes: 5
Re: llamada de un .asm desde otro .asm
« Respuesta #2 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

Desconectado julio_med

  • PIC10
  • *
  • Mensajes: 13
Re: llamada de un .asm desde otro .asm
« Respuesta #3 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


Desconectado julio_med

  • PIC10
  • *
  • Mensajes: 13
Re: llamada de un .asm desde otro .asm
« Respuesta #4 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



Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: llamada de un .asm desde otro .asm
« Respuesta #5 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. 
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado julio_med

  • PIC10
  • *
  • Mensajes: 13
Re: llamada de un .asm desde otro .asm
« Respuesta #6 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??????

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: llamada de un .asm desde otro .asm
« Respuesta #7 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
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado julio_med

  • PIC10
  • *
  • Mensajes: 13
Re: llamada de un .asm desde otro .asm
« Respuesta #8 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

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: llamada de un .asm desde otro .asm
« Respuesta #9 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
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)


 

anything