ドラクエ風RPGファミコンプログラム レジスタとアドレッシングモード

第19回
アセンブラ入門編】
レジスタとアドレッシングモード』
1.レジスタの種類

P:プロセッサステータス(フラグレジスタ
 *演算結果の状態を保持する。
A:アキュムレータ
 *算術演算、論理演算、BITシフト、ローテト等の演算用。
X:インデックスレジスタX
 *インデックス用途、カウンタ、スタックポインタへのアクセス。
Y:インデックスレジスタY
 *インデックス用途、カウンタ。
PC:プログラムカウンタ
 *現在実行中のアドレス。
S:スタックポインタ
 *PUSH、PULL等のレジスタの退避用メモリ。
【ステイタスレジスタ
⑴BIT0 キャリーフラグ:符号なしオーバーフローが発生したら1、さもなくば0。

⑵BIT1ゼロフラグ:算術論理演算、ロード命令を実行した後、
   結果がゼロのときセットされる。

⑶BIT2割り込み禁止フラグ:セットするとIRQ、BRK割り込みが禁止される。

⑷BIT3デシマルフラグ:ファミコンのCPUでは、カットされた機能。

⑸BIT4ブレイクコマンドフラグ:BRK割り込み発生時にセットされる、IRQとの識別       用。
⑹BIT5予約フラグ:常に1がセット。
 

⑺BIT6オーバーフローフラグ:演算前後のオペランドが、$7F~$80をまたぐとセ   ット。

⑻BIT7ネガティブフラグ(マイナスフラグ):演算の結果、BIT7が1の時セットさる。

2.アドレッシングモード

①イミディエイト:8bitの即値(♯を付ける。)

②アブソリュート:16bitのアドレス($を付ける。)

③ゼロページ:$0000~$00ffまでのメモリを8bitで表す

④リラティブ:符号付8bit値(条件分岐命令で使用。)

⑤ゼロページ・インデックスレジスタX:$00✛Xで示すアドレス。

⑥ゼロページ・インデックスレジスタY:$00✛Yで示すアドレス。

⑦アブソリュート・インデックスレジスタX:$e000+Xで示すアドレス。

➇アブソリュート・インデックスレジスタY:$e000+Yで示すアドレス。

⑨インデックストX・インダイレクト:$00+Xで示すアドレスの16bit値
 の8bit値をAにロード。

⑩インダイレクト・インデックストY:$00で示すアドレスの16bit値+Yの
 8bitをAにロード。
 
3.ジャンプ命令と条件分岐命令

【ジャンプ命令】

  ⁂jmp $8000 は$8000番地にジャンプせよという命令、
   jmp LAVEL のように書のが通常。
[例]
loop:
     jmp loop
  ⁂jmp ($8000) という命令もあるが、ここでは触れない。

【条件分岐命令命令】

ラベル名:

⁂bne ラベル名   は演算・比較の結果がゼロでなかったら、ラベル名へ

 ジャンプせよという命令、この他にも色々な条件分岐命令があります。

*次回からは、プログラム上で、検証していきます。