構造体は、複数のデータ要素を 1 つにまとめます。構造体を使用すると、複数の要素からなるデータを単一のデータのように宣言できます。各データ要素は「フィールド」名で参照できます。
STRUC 文は構造体型宣言の開始を指定し、ENDS 文は終了を指定します。2 つの文の間には複数のデータ定義文を記述でき、これらが構造体のフィールドになります。STRUC および ENDS 文は構造体型(構造体タグ)を宣言するだけです。実際の構造体データを作成するには、後述の「構造体データ作成文」を改めて記述する必要があります。
構文 tag STRUC
data-definitions
...
tag ENDS
例 DATE STRUC
YEAR DW ?
MONTH DB ?
DAY DB ?
DATE ENDS
tag は必須です。対応する STRUC 文と ENDS 文の tag を一致させる必要があります。
data-definitions には、任意個のデータ定義文を記述できます。データ定義文にラベルを指定すると、その名前が構造体のフィールド名として記憶されます。フィールド名は、構造体フィールド演算子(.)で参照でき、構造体先頭からのオフセットバイト数を表します。
それぞれのデータ定義文には、デフォルトの初期値を指定できます。次の例は、構造体型 DATE をデフォルトの初期値 1991,6,1 で宣言しています。
DATE STRUC
YEAR DW 1991
MONTH DB 6
DAY DB 1
DATE ENDS
あらかじめ宣言した構造体型を使用して、実際の構造体データを作成します。
構文 [label] tag < [value ,...] > ,...
例 ABC DATE <>
DATE <>
ABC DATE <>,<>,<>
ABC DATE <1989,12,10>,<1991,2,25>
ABC DATE <1964>
ABC DATE <,1,1>
ABC DATE 10 DUP(<>)
label は、このデータ領域に付けるラベルで、省略できます。
tag は、あらかじめ STRUC 文によって宣言しておいた構造体型名です。
value は、データ領域の初期値です。構造体の各フィールドに対応するデータを < > 内にカンマで区切って並べます。省略すると、構造体型宣言で指定したデフォルトの初期値が使用されます。初期値は山型括弧(< >)で囲む必要があります。
DUP 演算子も使用できます。この場合は、< > で囲まれた部分を単一のデータとして DUP 演算子に渡します。