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
NOTE:
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 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_170Here 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_5The 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.