Here's one way, a bit wasteful on FLASH with the fixed length but compared to individual HSEROUT (or LCDOUT) statements I'd imagine it's quite a bit smaller.
Code:
Strings CON EXT

i VAR BYTE
Char VAR BYTE
StringNumber VAR BYTE
StartAddress VAR WORD

Goto OverStrings
ASM
Strings
    ; Strings, fixed length, 20 characters including null terminator.
    ; Actual string terminatesends with a NULL and is then padded to exactly 20 chars.
    db "Set Year", 0, "           "    ; 0
    db "Set Month", 0, "          "    ; 1
    db "Set Date", 0, "           "    ; 2
    db "Set day of week", 0, "    "    ; 3
    db "Set Hour", 0, "           "    ; 4
    db "Set Minute", 0, "         "    ; 5 
    db "Set alarm mode", 0, "     "    ; 6
    db "Off", 0, "                "    ; 7
    db "On all week", 0, "        "    ; 8
    db "On without weekends", 0, ""    ; 9
    db "Set alarm hours", 0, "    "    ; 10
    db "Set alarm minutes", 0, "  "    ; 11
    db "Set display format", 0, " "    ; 12
    db "Imperial (12Hr/F)", 0, "  "    ; 13
    db "Metric (24Hr/C)", 0, "    "    ; 14
    db "Display brightness", 0, " "    ; 15
    db "Auto", 0, "               "    ; 16
    db "25%", 0, "                "    ; 17
    db "50%", 0, "                "    ; 18
    db "75%", 0, "                "    ; 19
    db "100%", 0, "               "    ; 20
ENDASM
OverStrings: 


Init:
    ANSELF = 0
    WPUF.1 = 0
    TRISF.3 = 0
    TRISF.0 = 0
    TRISF.1 = 1

Start:
    HSEROUT["Program start",13]
    HSEROUT["Address of first string: $", HEX4 Strings, 13]

Action:    
    StringNumber = 20                               ' Select which string to print
    GOSUB PrintString                               ' And, you guessed it, go print it.
    PAUSE 100
END


PrintString:   
    StartAddress = Strings + (StringNumber * 20)    ' Precalculate address of first char of string in question
    For i = 0 to 19                                 ' Maximum string length is 20 characters
        ReadCode (StartAddress + i), Char           ' Get a char from string in question.
        IF (Char = 0) THEN EXIT                     ' Break out if char is NULL
        HSEROUT[Char]                               ' Otherwise print it.
    NEXT
RETURN
/Henrik.