I have just written an x-y table lookup because I wanted to write the 3 (4) character day string to a similar display: Charater is returned from (w*4)+counter. This is easiest with binary length strings e.g. 2,4,8,16 Haven't thought about how to multiply by any other numbers. day_table movwf temp ;day number 0-6 clrc rlf temp,f ;multiply by 2 rlf temp,w ;multiply by 2 ;this takes us to the correct day addwf counter,w ;add char offset within day string 0-3 addwf pc,f dt "Sun " dt "Mon " dt "Tue " dt "Wed " dt "Thu " dt "Fri " dt "Sat " dt "Sun " Write_day clrf counter another movlw 5 ;write "Fri " as an example. call day_table call write_to_LCD ;character is now in w. print it. incf counter,f movlw 4 subwf counter,w btfss status,z goto another_char spin goto spin ;that's it. done. There you go. This is from memory of the code I wrote the other day which worked very nicely. If there are any bugs then it's my memory at fault. /\/\att.