Agrico LTX wrote: > I have a little problem with a macro (shown below) I am trying to use. ... > The macro works beatifully the first time I use it. However, when I > try to use it a second time, the _DoMenu_2, _DoMenu_3 and _DoMenu_4 > labels are duplicated. Indeed they are. In general you cannot use labels in macros unless you make the LABEL an argument to the macro and ensure that it is unique to each call of the macro. An easy way to do this is to produce a set of labels consisting of a "stem" supplied in the macro call plus suffixes written into the macro. This requires a method of "quoting" the stem within the label so that the suffix is concatenated. Many macro languages *require* the arguments passed to be quoted e.g.: &ARG1& I am afraid I have not checked MPLAB (is it?) yet in this regard. I am sure the "Local" directive is of no relevance here. Many (some?) macro assemblers do permit local or positional labels such as 1: 2: etc., anywhere in the code including macros, and referred to in branches/ jumps/ calls as "2b", "2f" etc. (referring to the nearest matching label Backwards or Forwards from the branch reference). Used in macros, these can easily refer to points within or indeed outside the macro invocation. Roland's solution for *this* macro however is to use PC referenced branches using the "$" designator. I am assuming that this refers to the post-increment position of the PC and that therefore the designation "Goto $+2" will in fact skip the following two instructions. Please make the necessary correction otherwise. If I further assume we may nest macros, we have: _DoMen2 Macro _Option, Button Btfss ButSta, Button ; Button pushed? Goto $+2 ; no Bcf ButSta, Button ; yes, clear pushed flag Goto _Option ; Branch to option EndM _DoMenu Macro _Opt1, _Opt2, _Opt3, _Opt4 DoMen2 _Opt1, Button1 ; Button 1 pushed? DoMen2 _Opt2, Button2 ; Button 2 pushed? DoMen2 _Opt3, Button3 ; Button 3 pushed? DoMen2 _Opt4, Button4 ; Button 4 pushed? EndM I assume that _NoBut was unnecessary anyway, being a label attached to the instruction immediately following the macro call. Cheers, Paul B.