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!