5.3.3 条件アセンブル制御命令

アセンブル制御擬似命令を使って、指定した範囲の行のアセンブルを行うか、行わないかを指定できます。

.IF, .ELIF, .ELSE, .ENDIF

表 5.33

条件アセンブル制御命令

制御命令

機能内容

.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として式を判定します。