• Domingo 22 de Diciembre de 2024, 17:27

Autor Tema:  Sentencia Res  (Leído 2266 veces)

crbrs

  • Nuevo Miembro
  • *
  • Mensajes: 18
    • Ver Perfil
Sentencia Res
« en: Lunes 2 de Enero de 2006, 15:25 »
0
Buenas.
Me vienen todas las dudas juntas  ;)  Bueno... la pregunta creo que es sencilla, pero no se resolverlo, se que se puede reservar en RAM, con la sentencia RES, por ejemplo:
Código: Text
  1.  
  2. variable RES 1
  3.  
  4.  
Y con eso coneseguiría una variable que apunta a una celda de memoria de 1 byte. Pero lo que necesito son nueve bytes, es decir seria asi:
Código: Text
  1.  
  2. variable RES 9
  3.  
  4.  

Hasta ahí bien, pero como accedería al segundo (tercero,.....,noveno) byte de esa variable? Se puede?
Muchas gracias. Saludos.

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Sentencia Res
« Respuesta #1 en: Martes 3 de Enero de 2006, 12:41 »
0
Buena pregunta, nunca se me habia ocurrido ni me toco utilizar de esta posibilidad.. segun tengo entendido la posición inicial es donde inicia la cadena en la ram, asi que tomas la posicion 0 que es el inicio de la cadena y el compilador cuenta desde ahi tantos byte como digas .. algo como

goto variable + 6

ahi accederias a la posicion 6 de tu variable de 9 bytes .. prueba con eso, si funciona me pasas el dato.. Saludos :)
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

crbrs

  • Nuevo Miembro
  • *
  • Mensajes: 18
    • Ver Perfil
Re: Sentencia Res
« Respuesta #2 en: Martes 3 de Enero de 2006, 13:39 »
0
Citar
goto variable + 6
Bueno, eso es lo q habia hecho, por la razon de hacer:
Código: Text
  1.  
  2. GOTO $+1
  3.  
  4.  
Y parace q si, q funciona, tambien funciona con registros contadores. Por ejemplo:
Código: Text
  1.  
  2. GOTO variable+contador
  3.  
  4.  
Siendo el contador un registro para recorrer la variable.
Aunque también cabe decir que me da un warning, y no se porq, la verda.. ai lo dejo:
"Register in operand not in bank 0.  Ensure that bank bits are correct."
Muchas gracias, de nuevo, Jonathan.

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Sentencia Res
« Respuesta #3 en: Martes 3 de Enero de 2006, 13:59 »
0
Bien :) un placer  :comp: .. el warning es solo un aviso de precaucion que te da el compilador, nada serio, hay una manera de entrar en los bancos y evitar estos warning.. es con una macro que anula los warning, pero no sirven mas que para ignorar los mensajes.. Me alegro que hayas resuelto el problema... disculpa la demora de mi respuesta y si puedo ser util en algo solo avisa :)  :smartass: . Un Abrazo!  :hola:
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
Re: Sentencia Res
« Respuesta #4 en: Martes 3 de Enero de 2006, 23:49 »
0
Hola muchachos! El warning que dices es normal con MPlab; yo siempre lo tenía, y lo eliminé con la siguiente linea al principio del programa

Código: Text
  1. errorlevel -215, -302
  2.  

Ahora no recuerdo si el warning tiene el código 302 ó 215... Sí recuerdo que me los daba siempre, y con esta línea lo eliminé.
De cualquier manera, el programa te funciona igual. Al final del manual del MPASM (creo <_< ) hay una tabla o lista con los distintos códigos de error y warnings. Voy a ver de subirlas al foro...

Saludos

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Sentencia Res
« Respuesta #5 en: Jueves 5 de Enero de 2006, 13:13 »
0
Cita de: "Huguen_aus_Tirol"
Hola muchachos! El warning que dices es normal con MPlab; yo siempre lo tenía, y lo eliminé con la siguiente linea al principio del programa

Código: Text
  1. errorlevel -215, -302
  2.  

Ahora no recuerdo si el warning tiene el código 302 ó 215... Sí recuerdo que me los daba siempre, y con esta línea lo eliminé.
De cualquier manera, el programa te funciona igual. Al final del manual del MPASM (creo <_< ) hay una tabla o lista con los distintos códigos de error y warnings. Voy a ver de subirlas al foro...

Saludos
Cierto, yo uso lo mismo, de hecho lo unico que se logra es ignorar el warning, pero es util si compilamos y luego necesitamos simular el programa, ya que compila y va directo.. Gracias Huguen y te encargo la lista si la tienes por ahi a mano. Feliz Año Chamigo!.. :beer:
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
Re: Sentencia Res
« Respuesta #6 en: Jueves 5 de Enero de 2006, 14:12 »
0
Hola! Como les prometí, les dejo información... Lamentablemente no pude extraer los códigos de error y warnings de la documentación. Como el pdf es algo grande, les dejo el link para que lo lean o lo bajen. Es interesante leerlo si se va a programar en asembler ;)

Manual MPASM (Microchip)

Espero les sea útil...

Gracias Jonathan, lo mismo para vos! Y lo mejor en tus estudios! :)

Saludos :hola:

crbrs

  • Nuevo Miembro
  • *
  • Mensajes: 18
    • Ver Perfil
Re: Sentencia Res
« Respuesta #7 en: Martes 10 de Enero de 2006, 00:57 »
0
Citar
Y parace q si, q funciona, tambien funciona con registros contadores. Por ejemplo:
Código: Text
  1. CODE  
  2. GOTO variable+contador
  3.  
  4.  
Siendo el contador un registro para recorrer la variable.

Mmmmm.. me como mis palabras,... nop ES IMPOSIBLE. Es inviable, porque no puedo modificar el codigo generado en HEX que se graba en la memoria de programa. No se si m xplico...
Bueno.. por lo tanto mi  duda sigue debatiendose... a ver.. me explico necesito recorrer una variable de 9 bytes en un bucle.. es decir:
Código: Text
  1.  
  2. variable RES 1
  3. ;en alto nivel seria una cosa como ....
  4. desde i=1 hasta 9 hacer
  5. variable[i]=X
  6. fin desde
  7.  
  8.  

 :P Un poco chapuzilla me qedo.. pero a ver si me podeis indicar. Muchas gracias.