アセンブル制御擬似命令を使って、指定した範囲の行のアセンブルを行うか、行わないかを指定できます。
.IF, .ELIF, .ELSE, .ENDIF
|
|
|
.IF
|
条件アセンブルブロックの始まりを示します。条件の判定を行います。
|
.ELIF
|
二つ以上の条件ブロックを記述する場合に、二つ目以降の条件を判定します。
|
.ELSE
|
全ての条件が偽である場合に、アセンブルを行うブロックの始まりを示します。
|
.ENDIF
|
条件アセンブルブロックの終了を示します。
|
[指定形式]
.IF△条件式
ボディ
.ELIF△条件式
ボディ
.ELSE
ボディ
.ENDIF
|
[詳細説明]
.IF, .ELIFに記述した条件に従いアセンブルを行うブロックを制御します。
.IF, .ELIFのオペランドに記述した条件を判定し、真であれば以降に続くボディをアセンブルします。
条件が真である場合にアセンブルされる行は、制御命令".ELIF",".ELSE"および".ENDIF"行の前までです。
条件アセンブルブロック内には、アセンブリ言語ファイルに記述可能な全ての命令を記述できます。
条件式の結果によって、条件アセンブルが行われます。
例
[条件式の例]
sym < 1
sym+2 < data1
sym+2 < data1+2
'smp1' == name
[条件アセンブル記述例]
.IF TYPE==0
.byte "Proto Type Mode"
.ELIF TYPE>0
.byte "Mass Produciton Mode"
.ELSE
.byte "Debug Mode"
.ENDIF
[備考]
.IF, .ELIF制御命令のオペランドには、必ず条件式を記述してください。
.IF, .ELIF制御命令とオペランドの間には、必ず空白文字またはタブを記述してください。
条件式は、制御命令のオペランドに1つだけ記述できます。
条件式には、必ず条件演算子を記述してください。
次に示す演算子が記述できます。
表 5.34 | .IF および.ELIF 制御命令の条件演算子 |
|
|
>
|
左辺値が右辺値より大きい場合に真となります
|
<
|
左辺値が右辺値より小さい場合に真となります
|
>=
|
左辺値が右辺値より大きいか等しい場合に真となります
|
<=
|
左辺値が右辺値より小さいか等しい場合に真となります
|
==
|
左辺値と右辺値が等しい場合に真となります
|
!=
|
左辺値と右辺値が等しくない場合に真となります
|
条件式は符号付き32ビットで演算します。
条件演算子の左辺および右辺には、シンボルが記述できます。
条件演算子の左辺および右辺には、式が記述できます。式は、「4.1.5 オペランド部の記述方法」の「(2) 式」に従って記述してください。
条件演算子の左辺および右辺には、文字列が記述できます。文字列は、必ずシングルクォーテーション(')またはダブルクォーテーション(")で囲って記述してください。このとき、文字列の大小は、文字コードの値で判定されます。
例)
"ABC"<"CBA" 414243 < 434241で真となります。
"C" < "A" 43 < 41で偽となります。
条件演算子の前後には、空白文字またはタブが記述できます。
条件式は、制御命令".IF"および".ELIF"のオペランドに記述できます。
演算結果のオーバフローは判断しません。
シンボルは、前方参照(本制御命令行より後に定義されているシンボルを参照)はできません。
前方参照のシンボルや、未定義のシンボルを記述した場合は、値を0として式を判定します。