ドラクエ風RPGファミコンプログラム講座 アセンブラ入門編

アセンブラ基礎知識編】

レジスタは、一時的にDATAを入れる箱で計算をしたり、コピーしたりいます。

レジスタの種類』

1.Aレジスタ:アキュームレータともいわれ主に汎用演算を担っています。

2.Xレジスタ:インデックスレジスタともいわれ主に配列のアクセスやカウンタに

        使われている。

3.Yレジスタ:インデックスレジスタともいわれ主に配列のアクセスやカウンタに

        使われている。

4.S    :スタックポインタスは、タックの位置を保持。

5.P    :ステータスレジスタは、Aレジスタの演算結果の情報を保持。

6.PC            :プログラムカウンタは、唯一の16ビットのレジスタでプログラムの

          実行している位置を保持する。

アセンブリ言語のコーディング』

*6502のアセンブラは、16進数には "$" を付け 、2進数には "%" を付て、

 "%00110101"と表記します。

アセンブリ言語のコードは、オペコードとオペランドで構成されていて

 LD がオペコードその後ろにオペランドがつきます、オペランドはアドレッシング

 と言われ13種類ほどあります。

〖例〗

 LDA $2000 

 

アセンブラ入門編】
〖ロード命令とストア命令

*LD は、レジスタに、メモリーの値や数値をコピーする。

*ST は、メモリーに、レジスタの値や数値をコピーする LD命令の逆。

 (例)
 LDA #10      :Aレジスタに、10進数10を入れる。
 LDX #$20         :Xレジスタに、16進数$20を入れる。
 LDY #%00001110      :Yレジスタに、2進数#%00001110を入れる。
  
 ストア命令 st は、レジスタの値をメモリーにコピーする。
 STA     $2000   Aレジスタの値を、$2000番地に入コピーする。
 STA  $2000   Xレジスタの値を、$2000番地に入コピーする。
 STA  $2000   Yレジスタの値を、$2000番地に入コピーする。


アセンブラ実技編】

 〖ロード命、ストア命令の実習〗

*前回のTEST用プログラム test.asmを使って実際にプログラムを書いてみます。

  lda #$20
  sta $0000

 

f:id:chien1956:20200212104247p:plain

【画像1】

Start:
 sei
 cld
 ldx #$ff
 txs

 lda #$20
 sta $0000

loop000:
 jmp loop000

 

 lda #$20 ,  sta $0000  をサンプルプログラムの、 loop000:の前に書き足す。

  そしてコンパイルして実行します,そしてDebugからHex Editordeで、

  $0000番地の値を確認します。$20 になっていれば、成功です。

  ⁂ロード、ストア命令は、基本中の基本ですので、レジスタや値を換えて

  色々と試してみてください。今日は簡単な実習をやってみました。

 

f:id:chien1956:20200212104830p:plain

 【画像2】

 ⁂前回のTEST用プログラムに割り込みベクターにStartが設定されていませんでした

【画像1】をみて修正してください。