I'm guessing this is an 8051 assembler from the presence of the lcall instruction. For each character in the string an instruction sequence is generated which moves the character into the accumulator and then calls the data_in subroutine.
IMHO this is a really silly and stupid way to do things for strings which are longer than 3 or 4 characters.
The irpc is a macro within a macro. It stands for "indefinite repeat character". It is common to many assemblers going back to at least the 1960's. Here is a snippet from the top google hit
**broken link removed**
5.2. IRPC
IRPC Param , String
Body
ENDM
The body of the macro is repeated once for each character in the specified
string. The specified parameter is substituted on each expansion with the
scanned character. The IRPC macro is executed immediately.
That is also why there are two "endm" statements. The inner one is for the irpc and the outer one is for the disp_str macro