ZHCU875Z August 2001 – October 2023 SM320F28335-EP
保留未初始化的空间
symbol .usect "section name", size in words[, blocking flag[, alignment] ]
.usect 指令用于在未初始化的命名段中为变量保留空间。该指令类似于 .bss 指令(参阅 .bss 主题);两者都只是为数据保留空间,而该空间没有内容。但是,.usect 定义了可以放置在存储器中任何位置的其他段,这些段独立于 .bss 段。
初始化段的指令(.text、.data 和 .sect)指示汇编器暂停汇编到当前段,并开始汇编到另一个段中。在当前段中遇到的 .usect 或 .bss 指令会直接汇编,然后在当前段中继续汇编。
可在存储器中连续放置的变量可在同一指定段中定义;方法是用同一指令名和后续符号(变量名)重复 .usect 指令。
有关各段的更多信息,请参阅Chapter2。
此示例使用 .usect 指令定义两个未初始化的命名段 var1 和 var2。符号 ptr 指向 var1 段中保留的第一个字。符号 array 指向 var1 中保留的 100 个字的块中的第一个字,dflag 指向 var1 中 50 个字的块中的第一个字。符号 vec 指向 var2 段中保留的第一个字。
图 5-7 展示了此示例如何在两个未初始化的段 var1 和 var2 中保留空间。
1 *******************************************
2 ** 汇编到 .text 段。 **
3 *******************************************
4 000000 .text
5 000000 9A03 MOV AL, #03h
6
7 *******************************************
8 ** 保留 var1 中的 1 个字。 **
9 *******************************************
10 000000 ptr .usect "var1", 1
11
12 *******************************************
13 ** 保留 var1 中的 100 个字。 **
14 *******************************************
15 000001 array .usect "var1", 100
16
17 000001 9C03 ADD AL, #03h ; Still in .text
18
19 *******************************************
20 ** 保留 var1 中的 50 个字。 **
21 *******************************************
22 000065 dflag .usect "var1", 50
23
24 000002 08A9 ADD AL, #dflag ; Still in .text
000003 0065-
25
26 *******************************************
27 ** 保留 var2 中的 100 个字。 **
28 *******************************************
29 000000 vec .usect "var2", 100
30
31 000004 08A9 ADD AL, #vec ; Still in .text
000005 0000-
32
33 *******************************************
34 ** 声明一个外部 .usect 符号 **
35 *******************************************
36 .global array