Maunix, que es eso de macros?
Es una forma de 'repetir código' de una forma mas legible, versátil y veloz.
Si por ejemplo necesitas hacer
movlw .20
movwf TEMP1
call SUBRUTINA1
movlw .21
movwf TEMP1
call SUBRUTINA1
movlw .30
movwf TEMP1
call SUBRUTINA1
movlw .32
movwf TEMP1
call SUBRUTINA1
movlw .33
movwf TEMP1
call SUBRUTINA1
movlw .34
movwf TEMP1
call SUBRUTINA1
movlw .36
movwf TEMP1
call SUBRUTINA1
movlw .38
movwf TEMP1
call SUBRUTINA1
En ese caso, se me ocurre de inmediato hacer un macro, que me ahorre escribir tanto y que además me haga más legible al código (por ser mas breve).
Entonces hago.
preloadsubrutina1 macro __dato
movlw __dato
movwf TEMP1
call SUBRUTINA1
endm
preloadsubrutina1 .20
preloadsubrutina1 .21
preloadsubrutina1 .30
preloadsubrutina1 .32
preloadsubrutina1 .33
preloadsubrutina1 .34
preloadsubrutina1 .36
preloadsubrutina1 .38
En el manual del Assembler está bien explicado como se usan los macros. Se pueden usar muchos parámetros, incluso variables locales que tengan vida solo dentro del macro, etc. Pero bueno, no quiero confundir con cosas como esta. Lo mejor es empezar por algo, si es que consideras que hacer macros te es útil para luego ir complicándolos. No siempre hace falta hacer un macro y también es cierto que en mis primeros códigos nunca usé un macro, ni sabía como hacerlos, jeje.
Asi que bueno, lo mejor sería que comiences por hacerlos bien fáciles para luego comenzar a detectar lugares donde te parece que serán útiles.
El código que ocupan en la memoria de programa ambos códigos es exactamente el mismo, pero el segundo código, a mi modo de verlo es más legible y mas breve.
Es una forma que se usa mucho cuando hay que repetir código tantas veces. De esta forma te olvidas de tener en cuenta muchas cosas y agilizas el proceso de codificación.
Y recalco lo siguiente: Esto no ahorra código en memoria de programa, solo ahorra tiempo a la hora de escribirlo.
Saludos