ZHCU875Z August 2001 – October 2023 SM320F28335-EP
初始化字段
.fieldvalue[, size in bits]
.field 指令用于初始化存储器单个字内的多位字段(16 位)。此指令有两个操作数:
*** WARNING! line 21: W0001: Field value truncated to 1
.field 3, 1
连续的 .field 指令从当前字开始将值打包成指定位数。字段从字的最低有效位开始打包,随着更多字段的添加,移向最高有效位。如果汇编器遇到不适合当前字的字段大小,则会写出该字、递增 SPC,并开始将字段打包成下一个字。用户可以使用操作数为 1 的 .align 指令来强制下一个 .field 指令开始打包成一个新字。
.field 指令类似于 .bits 指令(请参阅 .bits 主题)。但是,.bits 指令不会强制对齐到字段边界,并且不会在到达字边界时自动递增 SPC。
使用 .align 指令来强制下一个 .field 指令开始打包一个新字。
如果使用标签,则其指向包含指定字段的字。
当用户在 .struct/.endstruct 序列中使用 .field 时,.field 会定义成员的大小;但不会初始化存储器。如需更多信息,请参阅 .struct/.endstruct/.tag 主题。
该示例展示了如何将字段打包成一个字。在填满一个字并开始下一个字之前,SPC 不会改变。
1 ************************************
2 ** Initialize a 14-bit field. **
3 ************************************
4 000000 0ABC .field 0ABCh, 14
5
6 ************************************************
7 ** Initialize a 5-bit field in a new word. **
8 ************************************************
9 000001 000A L_F: .field 0Ah, 5
10
11 ************************************************
12 ** Initialize a 4-bit field in the same word.**
13 ************************************************
14 000001 018A X: .field 0Ch, 4
15 ************************************************
16 ** Relocatable field in the next 2 words. **
17 ************************************************
18 000002 0001' .field X
19 ************************************
20 ** Initialize a 32-bit field **
21 ************************************
22 000003 4321 .field 04321h, 32
000004 0000
图 5-5 展示了该示例中的指令如何影响存储器。