LISTING DESCRIPTION

This is a listing snapshot. It shows a short section of an actual listing generated by the XCASM assembler.
0         1         2         3         4         5         6         7         8         9
0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
AAAAAAAABBBBBBBBCCCCCCCCCCCCCCCCEEEEEEEEEEEEEEEEFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHH

<<---- snapshot starts here

        052F                    ws_05           if_SCL_high ws_10                       ; wait for SCL=1 brfore we start looking for start
                                -> ws_05_170
        052F    1A 06                           btfsc   SCL_port,SCL
        0530    2D 34                           goto    ws_10
                                                I2C_TASK_YIELD                          ; condition (we may be recovering from the last bit
                                resume2_isr_ind .set    LABEL(STR(resume2_isr)+"_"+STR(($+2)>>8))
                                -> i2c_resume2_isr_5
        0531    30 33                           movlw   ($+2)&255
        0532    2B A2                           goto    resume2_isr_ind
        0533    2D 2F                           goto    ws_05                           ; of a transfer, in which case SCL=0)

        0534                    ws_10           if_SCL_high ws_11
                                -> ws_10_170
        0534    1A 06                           btfsc   SCL_port,SCL
        0535    2D 3B                           goto    ws_11

<<---- snapshot ends here

 

COLUMN    DESCRIPTION
A error messages, warnings, diagnostics
B address
(word or byte depending on section)
C emitted binary
(formatted as hex)
D reserved
E label field
F opcode field
(also used for assembler statements and macros)
G operand field
H comment field
NOTE:
The occurance of the labels ws_05, ws_10 and resume2_isr_ind in the label field of the listing snapshot shown above.
i.e.
        052F                    ws_05           if_SCL_high ws_10                       ; wait for SCL=1 brfore we start looking for start
                                -> ws_05_170
Here ws_05 is an assembler variable which refers to the label ws_05_170. The listing shows this via the '->' which binds the ws_05 to ws_05_170.
                                resume2_isr_ind .set    LABEL(STR(resume2_isr)+"_"+STR(($+2)>>8))
                                -> i2c_resume2_isr_5
The above .set statement sets an assembler variable to a label. Specifically resume2_isr_ind is the assembler variable which is set to the label i2c_resume2_isr_5. The listing shows this via the '->' which binds the resume2_isr_ind to i2c_resume2_isr_5.

 
At the end of the listing there is a section labeled
*** groups
This lists all the groups defined within the program and breaks them down into component sections within each group. Section within the breakdown is further broken down into start address, length and type.

Following the groups section there is a section labeled
*** sections
This lists all the sections defined within the program and breaks them down into start address, length and type.

Following the sections section, is a full breakdown of all the labels within each section.

Then finally comes the section labeled
*** undefined symbols
This lists all the symbols that have been used but not defined. Although MACINV is listed as an undefined label, it is in fact an internal label used to obtain the current macro invokation number.