DEX 命令 (Decrement Index Register X)
インデクスレジスタXの値をデクリメントします。
DEXオーバーロード
| オペコード | 構文 | アドレッシングモード | バイト数 | 命令サイクル | 注 |
|---|---|---|---|---|---|
| CA | DEX | Imp. | 1 | 2 |
フラグ変化
n-----z-
n: デクリメントした結果のMSBがセットされる
z: デクリメントした結果が0の場合にセットされる
使用例
カウントダウンするループ
比較命令を使わずに済むので、カウントアップより短く書けます。
; $7E:2000~$7E:201F を$FFで埋める(Aは8ビット、Xは16ビット)
LDA.b #$FF
LDX.w #$001F
.loop
STA.l $7E2000,X
DEX
BPL .loop ; Xが負($FFFF)になるまで繰り返す
BPL命令で終了を判定する方法は、Xの初期値が$7FFF以下(8ビットモードでは$7F以下)の場合にだけ使えます。それより大きい場合は、BNEで0になるまで回し、0番目は別に処理します。