式は“定数”,“シンボル”,“ラベルの参照”,“演算子”,および“かっこ”を要素とし,これらの要素で構成される値を示します。式は,絶対値式と相対値式に分けて扱います。
定数値を示す式を“絶対値式”と呼びます。絶対値式は,命令においてオペランドを指定する場合,または疑似命令において値などを指定する場合に用いることができます。通常,絶対値式は,定数,またはシンボルによって構成されます。次に示した形式が絶対値式として扱われます。
定義済みのシンボル参照を指定した場合,そのシンボルに対して定義した値の定数が指定されたものとして扱われます。したがって,定数式は,定義済みのシンボル参照を,その構成要素として持つことができます。
シンボルに関する式には,次のものがあります(“±”は“+”か“-”のどちらかになります)。
ここで言う“シンボル”とは,同じファイル内でシンボル定義疑似命令によって定数として定義されたもので,かつ,その時点において未定義なシンボル参照を指します。定義済みのシンボル参照を指定した場合は,そのシンボルに対して定義した値の“定数”が指定されたものとして扱います。
ラベル参照に関する式には,次のものがあります(“±”は“+”か“-”のどちらかになります)。
上記の例のような“2つのラベル参照”は,次のように参照にする必要があります。
これらの条件を満たさない場合は,メッセージが出力され,アセンブルが中止されます。
.DW疑似命令においては,「2つのラベル参照」が絶対アドレス参照であれば,別ファイルで異なるセクションに定義を持っていても,アセンブル可能とします。
特定のアドレスからのオフセット値注1を示す式を“相対値式”と呼びます。相対値式は,命令においてオペランドを指定する場合,データ定義疑似命令において値を指定する場合に用いることができます。通常,相対値式は,ラベル参照によって構成されます。次に示した形式注2が相対値式として扱われます。
絶対値式,相対値式ともに,“-シンボル+ラベルの参照”の形式の式を“ラベルの参照-シンボル”の形式の式とみなすことはできますが,“ラベルの参照-(+シンボル)”の形式の式を“ラベルの参照-シンボル”の形式の式とみなすことはできません。このため,かっこ“( )”は定数式においてのみ用いるようにしてください。 |