buffer does not actually exist its just a label in the macro , when assembled
@ Flash2Ram _buff , _String1 , produces
the label "buffer" is replaced with the symbol of the intended targetCode:000168 0E00 M movlw UPPER _String1 0016A 6EF8 M movwf TBLPTRU 00016C 0E01 M movlw HIGH _String1 00016A 6EF8 M movwf TBLPTRU 00016C 0E01 M movlw HIGH _String1 00016E 6EF7 M movwf TBLPTRH 000170 0E3E M movlw LOW _String1 000172 6EF6 M movwf TBLPTRL 000174 0E1A M movlw low _buff 000176 6ED9 M movwf FSR2L 000178 0E00 M movlw High _buff 00017A 6EDA M movwf FSR2H M L?CALL _bfill
at no stage do we actually write directly to the "buffer" we simply load its address (from the symbol table) into the fsr regs
the bfill subroutine then fills the "buffer" indirectly via the fsr regs
macro's are not subroutines they are just another shortcut way to save typing, every time the macro is encountered the real code as above is inserted into your program




Bookmarks