• Martes 2 de Julio de 2024, 23:52

Autor Tema:  Se Puede Compaginar Ensamblador Y C?  (Leído 3766 veces)

edurne

  • Miembro activo
  • **
  • Mensajes: 35
    • Ver Perfil
Se Puede Compaginar Ensamblador Y C?
« en: Viernes 8 de Abril de 2005, 10:57 »
0
Hola a todos otra vez!! Como no domino ni el ensamblador ni el lenguaje C, de momento lo perfecto para mí sería combinar los dos. Si programo en CCS sé que puedo combianarlo, pero no sé si puedo hacer lo mismo programando en ensamblador. Supongo que no, pero agradecería que me respondiérais.

En caso de hacerlo en CCS, podría hacer la mayor parte del programa en ensamblador?? qué tendría que declarar como primeras líneas de código?? el problema es, que en este lenguaje los cambios de banco se hacen automáticamente, y en ensamblador hay que hacerlo manualmente, me equivoco? entonces.... tengo que definir los registros como si fuera a tratarlos en CCS y luego en las líneas de código ensamblador tratarllos como si no los hubiera declarado antes?

Ayuda por favor.f
Muchas gracias por adelantado por vuestro tiempo.
Un saludo. Edurne!

J1M

  • Miembro activo
  • **
  • Mensajes: 58
    • Ver Perfil
    • http://www.hobbypic.com
Re: Se Puede Compaginar Ensamblador Y C?
« Respuesta #1 en: Sábado 9 de Abril de 2005, 02:56 »
0
hola, yo esto no lo he usado nunca, pero como poder se puede, si buscas en la ayuda del CCS la directiva #ASM te aparecerá ayuda sobre lo que estas buscando, de todas formas pego por aquí un trocillo:

Syntax:
#asm
or
#asm ASIS
code
#endasm
 
Elements:
code is a list of assembly language instructions


Purpose:
The lines between the #ASM and #ENDASM are treated as assembly code to be inserted.    These may be used anywhere an expression is allowed.   The syntax is described on the following page.   The predefined variable _RETURN_ may be used to assign a return value to a function from the assembly code.    Be aware that any C code after the #ENDASM and before the end of the function may corrupt the value.

 
If the second form is used with ASIS then the compiler will not do any automatic bank switching for variables that cannot be accessed from the current bank.  The assembly code is used as-is.  Without this option the assembly is augmented so variables are always accessed correctly by adding bank switching where needed.

 
Examples:
int find_parity (int data)
{

int count;

#asm
movlw   0x8
movwf   count
movlw   0
loop:
xorwf   data,w
rrf     data,f
decfsz  count,f
goto    loop
movwf   _return_
#endasm
}

Example Files:        Este lo puedes encontrar dentro de la carpeta de Examples
ex_glint.c


supongo que tus dudas se habran disuelto, o te han aparecido mas! en cualquier caso, como pone ahi arriba, si usas:
#asm ASIS
tendras q hacer tu el cambio de banco etc, mientras que si usas:
#asm
lo hace automaticamente el compilador

y como puedes ver las variables que declares en C las 'entiende' tb en ASM

saludos!
..]Hobby[/color]PIC ]
Si puede pensarse, puede hacerse...

Gokuden

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Se Puede Compaginar Ensamblador Y C?
« Respuesta #2 en: Domingo 10 de Abril de 2005, 04:08 »
0
esto es lo que deseo aprender, alguito d c, programar todo en asm, y si necesito utilizar algun dispositivo externo en c, lo uso.