210 Chapter 38. TIC54X Dependent FeaturesSubsyms may be defined using the .asg and .eval directives (Section 38.9 Directives, Section 38.9Directives.Expansion is recursive until a previously encountered symbol is seen, at which point substitutionstops.In this example, x is replaced with SYM2; SYM2 is replaced with SYM1, and SYM1 is replaced withx. At this point, x has already been encountered and the substitution stops..asg "x",SYM1.asg "SYM1",SYM2.asg "SYM2",xadd x,a ; final code assembled is "add x, a"Macro parameters are converted to subsyms; a side effect of this is the normal as ’\ARG’ dereferenc-ing syntax is unnecessary. Subsyms defined within a macro will have global scope, unless the .vardirective is used to identify the subsym as a local macro variable Section 38.9 Directives.Substitution may be forced in situations where replacement might be ambiguous by placing colons oneither side of the subsym. The following code:.eval "10",xLAB:X: add #x, aWhen assembled becomes:LAB10 add #10, aSmaller parts of the string assigned to a subsym may be accessed with the following syntax::symbol(char_index):Evaluates to a single-character string, the character at char_index.:symbol(start,length):Evaluates to a substring of symbol beginning at start with length length.38.6. Local LabelsLocal labels may be defined in two ways:• $N, where N is a decimal number between 0 and 9• LABEL?, where LABEL is any legal symbol name.Local labels thus defined may be redefined or automatically generated. The scope of a local label isbased on when it may be undefined or reset. This happens when one of the following situations isencountered:• .newblock directive Section 38.9 Directives• The current section is changed (.sect, .text, or .data)