.MACRO begins the definition of a macro. It gives the macro name
and a list of formal arguments. The .MACRO directive is followed
by the source text to be included in the macro expansion. The
.ENDM directive specifies the end of the range.
Macro names do not conflict with user-defined symbols. Both a
macro and a user-defined symbol can have the same name.
When the assembler encounters a .MACRO directive, it adds the
macro name to its macro name table and stores the source text
of the macro (up to the matching .ENDM directive). No other
processing occurs until the macro is expanded.
The symbols in the formal argument list are associated with the
macro name and are limited to the scope of the definition of that
macro. For this reason, the symbols that appear in the formal
argument list can also appear elsewhere in the program.