Como trabajar con istrucciones en ensamblador con un compilador en c

#1
hola qu tal, estoy utilizando un compilador para programar pics muy bueno y muy recomendable que se llama mikro c. resulta que quiero realizar un par de instrucciones en lenguaje ensamblador y se que es de la siguiente manera:

asm{


}

todo bien hasta aqui cero errores como dice la documentacion, pero a la hora de declarar una variable no la reconoce ejemplo:

asm{

movlw 0x01 //carga a w el valor de 1
movwf var1 // pasa el valor de w a la variable f que es var1

end
}

me genera un error y no se como ocupar variables de ensamblador en lenguaje c! alguien lo ha hecho?

inclusive ya probe declarando la variable var1 asi:

var1 equ 0x22 // var1 esta en la posicion 0x22


y sigue generando error! alguien sabe por donde seguirle?
 
#2
he realizado varios intentos y aun no encuentro como ligar que en un compilador de c se pueda declarar una variable en ensamblador! será que debo trabajar con ensamblador utilizando variables direccionables o mejor comnocidas como direccionamiento indirecto!
 

Dr. Zoidberg

Well-known-Papá Pitufo
#3
transistor007 dijo:
he realizado varios intentos y aun no encuentro como ligar que en un compilador de c se pueda declarar una variable en ensamblador!
Normalmente, las variables que vas a acceder desde el código en ensamblador se declaran en el código C como variables comunes, y no al reves, ya que si fuera así, el compilador C no puede saber cuales son las direcciones de memoria que el assembler usa y se podrían pisar las variables entre sí.

La compilación de código C y assembler mezclado no es bidireccional. Primero compila código C, y con el resultado de esto invoca al ensamblador en las secciones de código definidas. Para hacer lo que pretendes, debería compilar ambas partes por separado y luego enredarse en acomodar la memoria, posiblemente sujeta a optimizaciones, en resumen...un lío terrible.

A menos que los compiladores C hayan cambiado sustancialmente desde la ultima vez que hice algo como eso, no hay forma de definir variables en bloques asm{...}.

transistor007 dijo:
será que debo trabajar con ensamblador utilizando variables direccionables o mejor comnocidas como direccionamiento indirecto!
Solo es necesario que declares las variables que quieres usar en C y luego las referencies por nombre en el código assembler. Al menos...siempre lo he hecho así (aunque no sé para los PICS).

Saludos!
 
Arriba