This statement directs the simulator to print the specified values to the trace window. The statement provides a mechanism to allow the user to specify which parts should be evaluated by the assembler and which by the simulator.
.print arg1, arg2, ... argn
anything between matching '{' and '}' is evaluated and processed by the assember, and anything else is evaluated by the simulator.
        .print  "lab %s = " : { STR(data_in) }, "abC %d xyZ": [{data_in}]

        where data_in is an variable with the value i2c_data_in
        and i2c_data_in is a label corresponding to the ram location 35
        generates the string 

        .print  "lab %s = " : "i2c_data_in", "abC %d xyZ" : [{35}]

        the '[' and ']' delimters when combined with the '{' and '}'
        delimters specify 'contents of' to the simulator (i.e. get the
        value held in ram location 35)

        the reset of the statement is standard XPE

        "ABC%s" : "x"

        is a string format operation that generates the string "ABCx"

        String formats correspond directly to 'C' language format string
        specification (except only one format specifier is allowed per string)
expressions such as [{data_in}][1] allow successive registers to be accessed.

the expression [{0}][indx] allows any register with the absolute address indx to be accessed.