構造体

構造体は、複数のデータ要素を 1 つにまとめます。構造体を使用すると、複数の要素からなるデータを単一のデータのように宣言できます。各データ要素は「フィールド」名で参照できます。

STRUC (STRUCT) / ENDS

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 演算子に渡します。

[目次]