ZHCU875Z August 2001 – October 2023 SM320F28335-EP
分配替代符号
.asg "character string",substitution symbol
.define "character string",substitution symbol
.eval expression,substitution symbol
.asg 和 .define 指令用于将字符串分配给替代符号。替代符号存储在替代符号表中。.asg 指令的使用方法与 .set 指令有诸多相同之处,区别在于 .set 会为符号分配一个常量值(不能重新定义),而 .asg 会为替代符号分配一个字符串(可重新定义)。
.define 指令的运行方式与 .asg 指令相同,但 .define 不允许创建与寄存器符号或助记符同名的替代符号。它不会在汇编器中创建新的符号命名空间,而是使用现有的替代符号命名空间。.define 指令用于在转换 C/C++ 头文件时防止汇编环境遭损坏。有关在汇编源代码中使用 C/C++ 头文件的更多信息,请参见Chapter13。
.eval 指令对存储在替代符号表中的替代符号执行算术运算。该指令会计算 表达式 并将结果的字符串值分配给替代符号。.eval 指令作为 .loop/.endloop 块中的计数器特别有用。
有关如何关闭替代符号的信息,请参阅 .unasg/.undefine 主题。
此示例演示了如何使用 .asg 和 .eval。
1 .sslist
2 .asg XAR6, FP
3 00000000 0964 ADD ACC, #100
4 00000001 7786 NOP *FP++
# NOP *XAR6++
5 00000002 7786 NOP *XAR6++
6
7 .asg 0, x
8 .loop 5
9 .eval x+1, x
10 .word x
11 .endloop
1 .eval x+1, x
# .eval 0+1, x
1 00000003 0001 .word x
# .word 1
1 .eval x+1, x
# .eval 1+1, x
1 00000004 0002 .word x
# .word 2
1 .eval x+1, x
# .eval 2+1, x
1 00000005 0003 .word x
# .word 3
1 .eval x+1, x
# .eval 3+1, x
1 00000006 0004 .word x
# .word 4
1 .eval x+1, x
# .eval 4+1, x
1 00000007 0005 .word x
# .word 5