ZHCU875Z August 2001 – October 2023 SM320F28335-EP
声明结构体类型
[stag] .struct [expr]
[mem0] element [expr0]
[mem1] element [expr1]
...
[memn] .tag stag [exprn]
...
[memN] element [exprN]
[size] .endstruct
label .tag stag
.struct 指令用于为数据结构定义的元素分配符号偏移量。这样便可将类似的数据元素分为一组,并由汇编器计算元素偏移量。这与 C 结构或 Pascal 记录相似。.struct 指令不会分配存储器空间;仅创建一个可重复使用的符号模板。
.endstruct 指令用于终止结构定义。
.tag 指令用于为 label 提供结构特征,简化符号表示,还可定义包含其他结构体的结构。.tag 指令不会分配存储器空间,必须事先定义 .tag 指令的结构标签(stag)。
与 .struct、.endstruct 和 .tag 指令一起使用的参数包括:
以下示例展示了 .struct、.tag 和 .endstruct 指令的各种用途。
REAL_REC .struct ; stag
NOM .int ; member1 = 0
DEN .int ; member2 = 1
REAL_LEN .endstruct ; real_len = 4
ADD ACC, @(REAL + REAL_REC.DEN) ;access structure element
REAL .usect ".ebss", REAL_LEN ; allocate mem rec
CPLX_REC .struct
REALI .tag REAL_REC ; stag
IMAGI .tag REAL_REC ; member1 = 0
CPLX_LEN .endstruct ; rec_len = 4
COMPLEX .tag CPLX_REC ; assign structure attrib
ADD ACC, COMPLEX.REALI ; access structure
ADD ACC, COMPLEX.IMAGI
COMPLEX .usect ".ebss", CPLX_LEN ; allocate space
.struct ; no stag puts mems into
X .int ; global symbol table
Y .int ;create 3 dim templates
Z .int
.endstruct
BIT_REC .struct ; stag
STREAM .string 64
BIT7 .field 7 ; bits1 = 64
BIT9 .field 9 ; bits2 = 64
BIT10 .field 10 ; bits3 = 65
X_INT .int ; x_int = 67
BIT_LEN .endstruct ; length = 68
BITS .tag BIT_REC
ADD AC, @BITS.BIT7 ; move into acc
AND ACC, #007Fh ; mask off garbage bits
BITS .usect ".ebss", BIT_REC