Global and Local Labels

To give names to special routines, Propeller Assembly code can make use of two types of labels: global and local.
Global labels look just like other symbols and follow the same rules as symbols; they begin with an underscore '_' or a letter and are followed by more letters, underscores, and/or numbers. See Symbol Rules for more information.

Local labels are similar to global labels except they start with a colon ':' and must be separated from other same-named local labels by at least one global label. Here's an example:

Addition       mov     Count, #9        'Set up 'Add' loop counter
:loop          add     Temp, X          'Iteratively do Temp+X
               djnz    Count, #:loop    'Dec counter, loop back 
Subtraction    mov     Count, #15       'Set up 'Sub' loop counter
:loop          sub     Temp, Y          'Iteratively do Temp-Y
               djnz    Count, #:loop    'Dec counter, loop back 
               jmp     #Addition        'Go add more

This example has two global labels, Addition and Subtraction, and two local labels, both named :loop. The local labels can have the exact same name, :loop, because at least one global label separates them. In fact, this is the point of local labels; they indicate common, generic things like loops without requiring unique names for each of them.

The two DJNZ instructions are exactly the same, but they each jump to different places. The Addition routine's DJNZ jumps back to the local label :loop within Addition, and the Subtraction routine's DJNZ jumps back to the local label :loop within Subtraction.

Note that the DJNZ instructions use the literal indicator, #, and the exact name of the local label, including the colon. Without the # the code would execute improperly (jumping indirectly rather than directly), and without the colon the code would result in a compile error. For more Propeller Assembly format information, see Common Syntax Elements.

Unless otherwise noted, content on this site is licensed under the
Creative Commons Attribution-ShareAlike 4.0 International License.