ZHCU947E June 2015 – January 2023
这些指令可将汇编语言程序的各个部分与相应的段相关联:
GUID-F317E356-FBE6-4802-ABC0-AF125934B28D.html#GUID-F317E356-FBE6-4802-ABC0-AF125934B28D详细讨论了这些段。
下面的示例显示了如何使用段指令将代码和数据与正确的段相关联。这是一个输出列表;第 1 列显示行号,第 2 列显示 SPC 值。(每个段都自带程序计数器,即 SPC。)当代码第一次被放入某个段中时,它的 SPC 值等于 0。当用户在汇编其他代码后继续汇编到某个段时,该段的 SPC 会恢复计数,就好像之间没有代码一样。
该示例中的指令执行以下任务:
.text | 用值 1、2、3、4、5、6、7 和 8 初始化字。 |
.data | 用值 9、10、11、12、13、14、15 和 16 初始化字。 |
var_defs | 用值 17 和 18 初始化字。 |
.bss | 保留 19 个字节。 |
xy | 保留 20 个字节。 |
.bss 和 .usect 指令不会结束当前段或开始新段;它们会保留指定的空间量,然后汇编器继续将代码或数据汇编到当前段中。
00000004 00000002
6 00000008 00000003 .word 3,4
0000000c 00000004
7
8 **************************************************
9 * Start assembling into the .data section *
10 **************************************************
11 00000000 .data
12 00000000 00000009 .word 9, 10
00000004 0000000A
13 00000008 0000000B .word 11, 12
0000000c 0000000C
14
15 **************************************************
16 * Start assembling into a named, *
17 * initialized section, var_defs *
18 **************************************************
19 00000000 .sect "var_defs"
20 00000000 00000011 .word 17, 18
00000004 00000012
21
22 **************************************************
23 * Resume assembling into the .data section *
24 **************************************************
25 00000010 .data
26 00000010 0000000D .word 13, 14
00000014 0000000E
27 00000000 .bss sym, 19 ; Reserve space in .bss
28 00000018 0000000F .word 15, 16 ; Still in .data
0000001c 00000010
29
30 **************************************************
31 * Resume assembling into the .text section *
32 **************************************************
33 00000010 .text
34 00000010 00000005 .word 5, 6
00000014 00000006
35 00000000 usym .usect "xy", 20 ; Reserve space in xy
36 00000018 00000007 .word 7, 8 ; Still in .text
0000001c 00000008