6.1.9.16 Equ Directive

The EQUdirective defines a symbol and equates this to the value of its constant expression argument. For example:
thomas EQU 123h
engine EQU thomas
will equate the identifiers thomas and engine with the value 123h.

This directive performs a similar function to that of the preprocessor’s #define directive (see Preprocessor Directives), which is often preferred in assembly programs to represent values with symbols.

The EQU directive is legal only when the symbol has not previously been defined in the same module. See the SET directive (Set Directive) if symbol values need to be redefined at different points in the same source file.

Note that this directive does not create variables. It does not reserve any memory for the symbol created. Use the DS directive to reserve data memory associated with a label (see Ds Directive).

As there can be more than one local symbol in separate assembly modules with the same name, only EQU symbols that are marked as being globally accessible (See Global Directive) will be visible in debuggers. For example, in the following code:
GLOBAL mode
mode EQU 2
the mode symbol will be watchable in IDEs.

Since EQU directives do not contribute to the output, they are processed separately to other instructions and directives. Thus, the program location counter cannot be used in EQU operand expressions.