Muchas gracias por la pronta respuesta, pero hay cosas que no me acaban de quedar claras:
la 1º pregunta, ok con la respuesta, ahora luego lo probaré en el mplab
la 2º por lo que entiendo que se puede poner WREG perfectamente, es más se refiere a las típicas instrucciones que puedes poner opcionalmente WREG, indicando que el resultado de la operación te lo guarde en ese registro, en vez de en la otra variable con la que estes operando. Pero el mplab no se tragaba WREG, y he tenido que poner W0 en todos los lados ¿?
3º El codigo que pones supongo que sería ya la libraría del LCD con formato .s ¿Como llamo a la librería con un call?
Veo también que dices que tengo que añadir un .include LCD.s en el codigo fuente del programa principal. Pero no me queda muy claro el tema de declaracion de variables. Pongamos que necesito una variable solo, llamada MIVARIABLE. Por lo que dices me vale con declararla en la librería y marcarla como global... para declarar variables en la ram suelo seguir el formato de una plantilla de esta manera:
.section .xbss, bss, xmemory
MIVARIABLE: .space 1 ;Allocating space (in bytes) to variable
Como ves la declaro en una zona de memoria ram llamada X, la pregunta es ¿si he declarado otras cosas ahí en el programa principal el compilador no tiene problemas y no las machaca, es decir sigue declarandolas a continuación de las que ya habían declaradas en el programa principal (efecto de deseado), o por el contrario las sobreescribe encima de las que ya había declaradas (efecto no deseado)? Supongo que no tendrá problemas, pero por asegurarme.
Entonces segun esa declaración de variable, si añado un .global MIVARIABLE, ya lo tendría?
Muchas gracias y un saludo
EDITO:
esto me está mosqueando, después de revisar el datasheet, en las operacion pone un ejemplo tipo:
MOV.B TMR0,WREG
Pero el mplab me da error al hacer justamente: MOV.B #0x06,WREG
¿alguna idea de porque? Sin embargo con W0 no da ningún problema... es normal o debería de preocuparme?