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
汇编语言程序中的所有标签都必须是唯一的。其中也包括宏中的标签。如果宏会扩展多次,其标签也要多次定义。多次定义一个标签是非法的。宏语言提供一种在宏中定义标签的方法,可使标签唯一化。只需在每个标签后跟一个问号,汇编器会将问号替换为一个句点,后跟一个唯一的数字。扩展宏时,您不会在列表文件中看到这些数字。您的标签显示时带有问号,与宏定义中的相同。您无法将些标签声明为全局标签。请参阅节 4.8.3进一步了解标签。
唯一标签的语法为:
label ? |
宏中的独特标签展示了了如何在宏中生成唯一标签。标签长度上限缩短,为唯一后缀留出空间。例如,如果宏的扩展次数少于 10 次,标签长度上限为 126 个字符。如果宏的扩展次数在 10 次到 99 次之间,标签长度上限为 125 个字符。具有唯一后缀的标签显示在交叉列表文件中。要获得交叉列表文件,请在调用汇编器时使用 --asm_cross_reference_listing 选项(请参阅节 4.14)。
1 ; define macro to find minimum
2 MIN .macro dst, src1, src2
3 CMP src1, src2
4 BCC m1?
5 MOV dst, src1
6 B m2?
7
8 m1? MOV dst, src2
9 m2?
10 .endm
11
12 ; call macro
13 00000000 .state16
14 00000000 MIN r4, r1, r2
1 00000000 4291 CMP r1, r2
1 00000002 D301 BCC m1?
1 00000004 1C0C MOV r4, r1
1 00000006 E000 B m2?
1
1 00000008 1C14 m1? MOV r4, r2
1 0000000a m2?