6.1.9.27 Local Directive

The LOCAL label directive allows unique labels to be defined for each expansion of a given macro. Any symbols listed after the LOCAL directive will have a unique assembler generated symbol substituted for them when the macro is expanded. For example:

down MACRO count
  LOCAL more
  more: decfsz count
  goto more
ENDM

when expanded, will include a unique assembler generated label in place of more. For example:

down foobar

expands to:

??0001 decfsz foobar
goto ??0001

If invoked a second time, the label more would expand to ??0002 and multiply defined symbol errors will be averted.