No entiendo lo del offset
¿A lo que te refieres es que no puedo exederme de 16 caracteres por línea?
Bueno aca hay una aclaración, el mensaje "SALUDOS!" solo tiene 8 caracteres y los demas mensajes tienen longitud de caracteres variable, yo uso mas bien longitud fija de 16 caracteres por mensaje (refiriendome siempre a enviar mensajes a un LCD2x16) entonces el mensaje "SALUDOS!" lo cambiaria a " SALUDOS! " asi te complicas menos y lo que ves en pantalla es exactamente como lo veras tambien en el LCD .. centrado.
Todo depende de como está enfocado el desplazamiento de tus mensajes, por ejemplo:
Mensajes addwf PCL,f
DT " SALUDOS! ", 0x00 ;offset de inicio de linea = 0
DT " FORO TODO-PIC ", 0x00 ;offset de inicio de linea = 17
... la linea 1 tiene 16 caracteres (offset de 0 al 15) luego sigue el "0x00" (offset 16) y ahora viene la siguiente linea (offset de inicio de linea es 17), a eso me refiero con el offset (desplazamiento), tu programa debe llamar a Mensajes inicializas tu variable Offset=0, lees el 1er caracter y lo envias al LCD ahora preguntas si el caracter es 0, si no lo es incrementas el offset+1 y vuelves a llamar a Mensajes ahora te retorna con el siguiente caracter y asi sucesivamente terminas cuando encuentres el 1er 0 de la primera linea.
Para mostrar ahora la 2da linea envias el comando al lcd para colocar el puntero en la segunda linea y haces el mismo procedimiento anterior pero esta vez inicias con offset=17 y listo.
Espero se haya entendido algo (aunque no lo creo) pero sobre este asunto hay bastante info en la red asi que tienes que hacer tus pruebas asi te daras cuenta.
Javicho.