buffer does not actually exist its just a label in the macro , when assembled
@ Flash2Ram _buff , _String1 , produces
Code:
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
the label "buffer" is replaced with the symbol of the intended target
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