ZHCUAV7Z september 1995 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
可以为符号分配字符串值。如此,用户便可以通过使字符串等于符号名称来为字符串创建别名。表示字符串的符号被称为替代符号。汇编器在遇到替代符号时,会将符号名称替换为其字符串值。与符号常数不同,替代符号可以重新定义。
用户可以在程序中的任意位置为替代符号分配字符串;例如:
.asg "SP", stack-pointer
; Assigns the string SP to the substitution symbol stack-pointer.
.asg "#0x20", block2
; Assigns the string #0x20 to the substitution symbol block2.
ADD stack-pointer, stack-pointer, block2
; Adds the value in SP to #0x20 and stores the result in SP.
使用宏时,替代符号非常重要,因为宏参数实际上就是已分配宏参数的替代符号。以下代码显示了如何在宏中使用替代符号:
addl .macro dest, src
; addl macro definition
ADDS dest, dest, src
; Add the value in register dest to the value in register src,
; and store the result in src.
BLCS reset_ctr
; Handle overflow.
.endm
*addl invocation
addl R4, R5
; Calls the macro addl and substitutes R4 for dest and R5 for src.
; The macro adds the value of R4 and the value of R5, stores the
; result in R4, and handles overflow.
有关宏的更多信息,请参阅Chapter177。