BMI 命令 (Branch if Result is Negative)

ネガティブフラグがセットされている場合に、指定された場所へアセンブリの実行位置を変更します。

BMIオーバーロード

オペコード構文アドレッシングモードバイト数命令サイクル注
30BMI nearPC Rel.221, 2

注

  1. 実際に分岐が発生した場合、1サイクル追加
  2. エミュレーションモードで、分岐先がページ境界をまたぐ場合は1サイクル追加

フラグ変化

--------

この命令はステータスフラグを変更しない。

解説

BMI命令はネガティブフラグがセットされている場合に、現在のプログラムカウンタを基準に、オペランドに指定された符号付き8ビットオフセットの示すアドレスへプログラムの実行位置を変えます。
通常は、CMP命令などの比較演算を伴って実行されますが、用途によってはそのほかの命令を伴って使用されることがあります。

使用例

符号を調べる

    LDA $10
    BMI .negative   ; 最上位ビット(8ビットならビット7)が1なら分岐する

レジスタのビット7を調べる

I/Oレジスタのフラグはビット7に置かれていることが多く、読み込むだけでネガティブフラグで判定できます。

    LDA $4210       ; RDNMI: ビット7 = NMIフラグ(読むとクリアされる)
    BMI .vblank     ; Vブランクが始まっていた

参照

BCC命令
BCS命令
BEQ命令
BNE命令
BPL命令
BRA命令
BRL命令
BVC命令
BVS命令