比較演算子

構文    <定数式>  EQ  <定数式>    ; 等しい
    <定数式>  NE  <定数式>    ; 等しくない
    <定数式>  LT  <定数式>    ; より小さい
    <定数式>  LE  <定数式>    ; より小さいか等しい
    <定数式>  GT  <定数式>    ; より大きい
    <定数式>  GE  <定数式>    ; より大きいか等しい

これらの演算子は定数式の大小を比較します。比較の結果が条件を満たしていれば真になり、定数 FFFFh を返します。条件を満たしていなければ偽になり、定数 0 を返します。

適用可能な式

これらの演算子は定数式同士、またはラベル同士の演算に適用できます。

例    10 EQ 3    ; 0
    10 NE 3    ; 0FFFFh
    10 LT 3    ; 0
    10 LE 3    ; 0
    10 GT 3    ; 0FFFFh
    10 GE 3    ; 0FFFFh

ラベルの比較

V2.07 以降では、ラベル同士を比較できるようになりました。次のコードは正当です。アセンブルすると「OK」と表示されます。

D1    DB    1
D2    DB    2
    IF (OFFSET D1) LT (OFFSET D2)
      ECHO OK
    ENDIF

この場合、LT 演算子の左右の式は定数ではありませんが、その差は定数なので判定可能です。なお、Microsoft MASM では V6.0 以降でこのような(定数でない式を比較する)条件判断が可能になっています。

これに対して、次のコードはアセンブルできません。

D1    DB    1
D2    DB    2
    IF (OFFSET D2) GE 10
      ECHO OK
    ENDIF

これは、「OFFSET D2」がアセンブル時には決定できないためです。「OFFSET D2」と「OFFSET D1」の差なら1であることがわかりますが、「OFFSET D1」や「OFFSET D2」の値自体はリンク後でないと決定できません。

[目次]