簡略化セグメント

ここで取り上げるディレクティブは、セグメントの定義を簡単に行うために用意されています。通常はセグメントの定義は SEGMENT 文で行いますが、アライン、コンバイン、セグメントクラス等多くのセグメント属性を指定する必要がありいささか面倒です。簡略化セグメントディレクティブを使用すれば、セグメント属性とセグメント名は自動的に決定されるため、これらを明示的に指定する必要がありません。また、簡略化セグメントディレクティブによって定義されるセグメントは、MS-C や TURBO C などの代表的な高級言語とリンクするのに適した名前と属性を持っており、これらの言語とリンクするプログラムを作成するときには便利でず。

このように簡略化セグメントディレクティブを使用すればいくつかのメリットを受けることができます。ただし、簡略化セグメントディレクティブはあくまで SEGMENT 文/ENDS 文の簡略形であり、SEGMENT 文と ENDS 文を使用すれば、簡略化セグメントディレクティブで定義できるすべてのセグメントは定義可能です。実際、簡略化セグメントディレクティブで定義したセグメントは、アセンブルリスト上ではすべて SEGMENT 文/ENDS 文で表現されるようになっています。

なお、簡略化セグメント定義と SEGMENT 文/ENDS 文を混合して使用することも可能です。

簡略化セグメントを使用する場合、必ず最初に .MODEL 文を実行してください。簡略化セグメントには SMALL/MEDIUM/COMPACT/LARGE(HUGE)の 4 種類のモデル(メモリモデル)がありますが、.MODEL 文はこのメモリモデルの選択を行います。

この節では次のディレクティブについて説明します。

メモリモデルの定義
MS-DOS セグメント順序規約に従う
コード用セグメントの定義
  • .DATA
データ用セグメントの定義
  • .CONST
定数データ用セグメントの定義
  • .DATA?
未初期化データ用セグメントの定義
  • .STACK
スタック用セグメントの定義
  • .FARDATA
FAR データ用セグメントの定義
  • .FARDATA?
FAR 未初期化データ用セグメントの定義
開始コードの生成
終了コードの生成

[目次]