Thomas, Try the following code: Define your table like this: Preamble_Line1 MOVWF PCL ; DT "Test message",0 ; The following code displays the string: CLRF LCD_Index ; Start with first character Preamble_Loop1 MOVLW HIGH Preamble_Line1 ; Load PCLATH with the MOVWF PCLATH ; high address of our table MOVLW LOW Preamble_Line1 + 1 ; Load W with the low address of our table ADDWF LCD_Index,W ; Add in the offset BTFSC STATUS,C ; Do we have a carry? INCF PCLATH,F ; Yes, adjust PCLATH CALL Preamble_Line1 ; Call our table MOVWF LCD_Data ; Save data for our LCD writing routine PAGESEL $ ; Reset PCLATH to point to this bank MOVF LCD_Data,F ; Check to see if BTFSC STATUS,Z ; our data is zero GOTO Preamble_Finished1 ; Yes, we are done PAGESEL LCD_Send_Data ; Change to the bank with our LCD write routine CALL LCD_Send_Data ; Call our LCD write routine PAGESEL $ ; Change back to this bank INCF LCD_Index,F ; Move to the next character GOTO Preamble_Loop1 ; Run the loop again Preamble_Finished1 Hope this helps. Kelly Kohls, N5TLE Dallas, Texas Homepage: http://www.qsl.net/n5tle/ There's never enough time to do it right, but plenty of time to do it over. -- http://www.piclist.com hint: The list server can filter out subtopics (like ads or off topics) for you. See http://www.piclist.com/#topics