ZHCU875Z August 2001 – October 2023 SM320F28335-EP
定义汇编时常量
symbol .set value
.set 指令将一个常量值等同于 .set 符号。之后,可以使用该符号代替汇编源代码中的值。这样可将常量和其他值等同于有意义的名称。
表达式中不能使用未定义的外部符号和之后会在模块中定义的符号。如果表达式可重定位,所指定的符号也是可重定位的。
表达式的值出现在列表的对象字段中。此值不属于实际目标代码,不会写入输出文件。
利用由 .set 定义的符号可通过 .def 或 .global 指令使之变得外部可见(请参阅 .global/.def/.ref 主题)。您可以通过这种方式定义全局绝对常量。
此示例展示了如何使用 .set 指定符号。
1 **********************************************
2 ** Equate symbol AUX_R1 to register AR1 **
3 ** and use it instead of the register. **
4 **********************************************
5 0001 AUX_R1 .set AR1
6 000000 28C1 MOV *AUX_R1, #56h
000001 0056
7
8 **********************************************
9 ** Set symbol index to an integer expr. **
10 ** and use it as an immediate operand. **
11 **********************************************
12 0035 INDEX .set 100/2 +3
13 000002 0935 ADD ACC, #INDEX
14
15 **********************************************
16 ** Set symbol SYMTAB to a relocatable expr.**
17 ** and use it as a relocatable operand. **
18 **********************************************
19 000003 000A LABEL .word 10
20 0004' 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 0035 NSYMS .set INDEX
27 000004 0035 .word NSYMS