第８章

## 第８章　スプライト移動

### 比較命令

これも第５章で既出ですが、比較命令は３つあります。比較対象は直値かアドレスを指定できます。

    	CMP - Aと比較する
    	CPX - Xと比較する
    	CPY - Yと比較する

例えばこのようにします。

    	cmp #$10  ; Aと10(16進数)を比較する

    	cpx #16   ; Xと16(10進数）を比較する

    	cpy $2002 ; Yと$2002の値を比較する

比較命令を行うと、ステータスレジスタのN(ネガティブ),Z(ゼロ)C,(キャリー)フラグが結果により変化します。 比較した後に条件分岐命令でジャンプします。ちなみに、直前の演算結果が0になるとZフラグが立ちますから、 beq,bneと併用するときはcmp #0は省略することができます。活用しましょう。 (余談ですが、C言語ではループ用カウンタ変数を0から加算するよりも減算するほうが速いと言われてたのはこの理由によります。 最近のコンパイラでは大差ないかもしれませんが)

    	beq ifEqual	; 比較結果が等しいならばifEqualラベルにジャンプする。

    	bne ifNotEqual	; 比較結果が違ったらifNotEqualラベルにジャンプする。

### スプライト移動プログラム

これで十字ボタンでスプライトを移動するプログラムを作れるところまで説明しました。 このソースをダウンロードして、第５章のソースを置いた場所に置いて

    　nesasm giko008.asm

を実行してください。パレット・スプライト・ＢＧは前回と同じものを使用しています。 GIKO008.NESが出力されたら、エミュレータで起動してください。十字キーで第５章のスプライトを動かすことができるはずです。 メモリを見ることができるエミュならば、$0000のX座標と$0001のY座標が変化するのがわかるでしょう。

トップページ 前のページ 次のページ

FC2 |  | キャッシング 花 | 無料 掲示板 無料ホームページ