RB1 is the 1st bit of portB, that is why it is 0x01. In assembly codes when we mention a bit of a port we need to say "Which port" and "Which bit".
As an example read the datasheet for assembly-code "bcf".
bcf PORTB,RB1 ;This means clear (assign to 0) RB1 bit in PORTB.
Now assembler knows "bcf" but not names "PORTB" and "RB1". We must assign correct values to those names. (Normally this is done in include file). Hence RB1 equ 0x01 is used to say "RB1=0x01". (Also check your include file there are values for PORTB and all other special-function-registers)
Macro is a code-snippet(ie. set of instructions) in MPLAB assembly ;
when we mention macro name in our code-editor, compiler will replace that macro-name with code-snippet.
Hence if we have exactly-same set-of-instructions in several places of our program, we can write a macro. So you write it only once and easy to edit. When we call macro name compiler automatically insert that set-of-instructions where macro-name is at.
To clarify more; think we have a macro which need 50Bytes in program memory. If we call that macro 4 times, it would take 200Bytes(=50 X 4)
"retlw" is used to return from a function with loading some value to WREG. (see definition on datasheets)
We run a loop until Wreg<>0. In the loop we write letter in W register on the LCD.
Code:
CLRF counter ;reset counter for table positioning
loop_start
INCF counter,F ;counter=counter+1 , table-position to be read
MOVF counter,W ;W=table-position to be read
CALL Table1_hello ;read table
XORLW 0x00 ;W=(W xor 0x00)
BTFSC STATUS, Z ;if above W=0 (ie. end of table)
GOTO exit_loop
CALL LCD_Char ;if W<>0 then write W on LCD
GOTO loop_start ;start loop again
exit_loop ;end letter writing loop
So you can enter whatever the letter to be print to table and keep last retlw 0x00.