ZHCU947E June 2015 – January 2023
定义汇编时常量
symbol .set value
symbol .equ value
.set 和 .equ 指令将一个常量值等同于 .set/.equ 符号。之后,可以使用该符号代替汇编源代码中的值。这样可将常量和其他值等同于有意义的名称。 .set 和 .equ 指令是相同的,可以互换使用。
表达式中不能使用未定义的外部符号和之后会在模块中定义的符号。如果表达式可重定位,所指定的符号也是可重定位的。
表达式的值出现在列表的对象字段中。此值不属于实际目标代码,不会写入输出文件。
利用由 .set 或 .equ 定义的符号可通过 .def 或 .global 指令使之变得外部可见(请参阅 .global/.def/.ref 主题)。您可以通过这种方式定义全局绝对常量。
此示例展示了如何使用 .set 和 .equ 指定符号。
1 **********************************************
2 ** Equate symbol AUX_R1 to register A1 **
3 ** and use it instead of the register. **
4 **********************************************
5 00000001 AUX_R1 .set A1
6 00000000 00B802D4 STH AUX_R1,*+B14
7
8 **********************************************
9 ** Set symbol index to an integer expr. **
10 ** and use it as an immediate operand. **
11 **********************************************
12 00000035 INDEX .equ 100/2 +3
13 00000004 01001AD0 ADDK INDEX, A2
14
15 **********************************************
16 ** Set symbol SYMTAB to a relocatable expr.**
17 ** and use it as a relocatable operand. **
18 **********************************************
19 00000008 0000000A LABEL .word 10
20 00000009' SYMTAB .set LABEL + 1
21
22 **********************************************
23 ** Set symbol NSYMS equal to the symbol **
24 ** INDEX and use it as you would INDEX. **
25 **********************************************
26 00000035 NSYMS .set INDEX
27 0000000c 00000035 .word NSYMS