ZHCU947E June 2015 – January 2023
初始化字段
.fieldvalue[, size in bits]
.field 指令用于初始化存储器单个字内的多位字段(32 位)。此指令有两个操作数:
"t.asm", WARNING! at line 1: [W0001] Value truncated to 1
.field 3, 1
连续的 .field 指令从当前 32 位位置开始将值打包成指定位数。字段从最低有效位(位 0)开始打包,随着更多字段的添加,移向最高有效位(位 31)。如果汇编器遇到不适合当前 32 位字的字段大小,它将用一些 0 来填充当前字节的剩余位,将 SPC 递增到下一个字边界,并开始将字段打包成下一个字。
.field 指令类似于 .bits 指令(请参阅 .bits 主题)。但是,.bits 指令不会强制对齐到字段边界,并且不会在到达字边界时自动递增 SPC。
使用 .align 指令来强制下一个 .field 指令开始打包一个新字。
如果使用标签,则其指向包含指定字段的字节。
当用户在 .struct/.endstruct 序列中使用 .field 时,.field 会定义成员的大小;但不会初始化存储器。如需更多信息,请参阅 .struct/.endstruct/.tag 主题。
该示例展示了如何将字段打包成一个字。在填满一个字并开始下一个字之前,SPC 不会改变。
1 **********************************************
2 ** Initialize a 24-bit field. **
3 **********************************************
4 00000000 00BBCCDD .field 0BBCCDDh, 24
5
6 **********************************************
7 ** Initialize a 5-bit field **
8 **********************************************
9 00000000 0ABBCCDD .field 0Ah, 5
10
11 *********************************************
12 ** Initialize a 4-bit field in a new word.**
13 *********************************************
14 00000004 0000000C .field 0Ch, 4
15
16 **********************************************
17 ** Initialize a 3-bit field **
18 **********************************************
19 00000004 0000001C x: .field 01h, 3
20
21 **********************************************
22 ** Initialize a 32-bit relocatable **
23 ** field in the next word **
24 **********************************************
25 00000008 00000004' .field x
#STDZ0728298 展示了该示例中的指令如何影响存储器。