ZHCU875Z August 2001 – October 2023 SM320F28335-EP
汇编到命名段
.sect "section name "
.sect " section name " [,{RO|RW}] [,{ALLOC|NOALLOC}]
.sect 指令用于定义命名段,它可作为默认的 .text 段和 .data 段使用。.sect 指令用于将 段名 设置为当前段;后面的行将汇编到 段名 段。
段名 用于标识段,段名必须用双引号引起来。段名可以包含 段名 :子段名 形式的子段名。有关段的更多信息,请参阅Chapter2。
如果使用 EABI,该段可标记为只读 (RO) 或读写 (RW)。另外,这些段可标记为分配 (ALLOC) 或未分配 (NOALLOC)。这些属性可按任意顺序指定,但每组中只能选择一个属性。RO 与 RW 冲突,ALLOC 与 NOALLOC 冲突。如果指定了冲突属性,汇编器会生成一个错误,例如:
"t.asm", ERROR! at line 1:[E0000] Attribute RO cannot be combined with attr RW
.sect "illegal_sect",RO,RW
本示例定义了两个具有特殊作用的段,Sym_Defs 和 Vars,并将代码汇编到其中。
1 ** Begin assembling into .text section. **
2 000000 .text
3 000000 FF20 MOV ACC, #78h ; Assembled into .text
000001 0078
4 000002 0936 ADD ACC, #36h ; Assembled into .text
5
6 ** Begin assembling into Sym_Defs section.**
7 000000 .sect "Sym_Defs"
8 000000 CCCD .float 0. ; Assembled into Sym_Defs
000001 3D4C
9 000002 00AA X: .word 0AAh ; Assembled into Sym_Defs
10 000003 FF10 ADD ACC, #X ; Assembled into Sym_Defs
000004 0002+
11
12 ** Begin assembling into Vars section.**
13 000000 .sect "Vars"
14 0010 WORD_LEN .set 16
15 0020 DWORD_LEN .set WORD_LEN * 2
16 0008 BYTE_LEN .set WORD_LEN / 2
17 0053 STR .set 53h
18
19 ** Resume assembling into .text section. **
20 000003 .text
21 000003 0942 ADD ACC, #42h ; Assembled into .text
22 000004 0003 .byte 3, 4 ; Assembled into .text
000005 0004
23
24 ** Resume assembling into Vars section.**
25 000000 .sect "Vars"
26 000000 000D .field 13, WORD_LEN
27 000001 000A .field 0Ah, BYTE_LEN
28 000002 0008 .field 10q, DWORD_LEN
000003 0000
29