BCS 命令 (Branch if Carry is Set/ Branch if Greater Than or Equal)
キャリーフラグがセットされている場合に、指定された場所へアセンブリの実行位置を変更します。
BGEはBCSのエイリアスです。
BCSオーバーロード
| オペコード | 構文 | アドレッシングモード | バイト数 | 命令サイクル | 注 |
|---|---|---|---|---|---|
| B0 | BCS near BGE near | PC Rel. | 2 | 2 | 1, 2 |
注
- 実際に分岐が発生した場合、1サイクル追加
- エミュレーションモードで、分岐先がページ境界をまたぐ場合は1サイクル追加
フラグ変化
--------
この命令はステータスフラグを変更しない。
解説
BCS命令はキャリーフラグがセットされている場合に、現在のプログラムカウンタを基準に、オペランドに指定された符号付き8ビットオフセットの示すアドレスへプログラムの実行位置を変えます。
通常は、CMP命令などの比較演算を伴って実行されますが、用途によってはそのほかの命令を伴って使用されることがあります。
使用例
符号なしの大小で分岐する
CMP命令の後では、キャリーフラグは「Aが比較した値以上」のときにセットされます。
LDA $10
CMP.b #$20
BCS .ge ; $10 >= $20 (符号なし)のとき分岐する
; ここに来るのは $10 < $20 のとき
サブルーチンの結果を受け取る
キャリーフラグはサブルーチンの成否を返すのにもよく使われます(CLC命令を参照)。
JSR CheckHit
BCS .hit ; キャリーがセットされて返ってきたら当たり