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

アセンブラ基礎知識編】

 

 

アセンブラ入門編】

〖アドレッシングモード〗

*6502はレジスタの数は少ないですが、アドレッシングは比較的豊富です。

 アドレッシングとは、オペコードの操作対象になるものです。

1.Implied       :暗黙的省略

2.Accumulator    :Aレジスタが対象

3.Immediate     :8bit即値(IM8)

4.Zeropage       :ゼロページが対象

5.Zeropage, X     :ゼロページ+Xレジスタ

6.Zeropage, Y     :ゼロページ+Yレジスタ

7.Relative      :符号付8bit即値アドレスへ分岐

8.Absolute     :16BITアドレスのメモリーが対象

9.Absolute, X    :インデックス付き16ビット即値アドレス

10.Absolute, Y   :インデックス付き16ビット即値アドレス

11・[Indirect]   :16ビット即値アドレスにジャンプ

12.[Indirect, X]  :8bitアドレス+Xレジスタにかかれた16BITアドレスの

            8bitの値

13.[Indirect], Y  :8bitアドレスにかかれた16ビットアドレス+yレジスタ

            8bitの値。


〖アドレッシングモードの詳細前編〗

1⃣ implied 

☆impliedとは、暗黙的という意味で オペコード内にオペランドも記述されていて

 オペランドは省略されているものを言う。

 TXA、PHA 等

2⃣ Accumulator 

☆Aレジスタが操作対象

 LSR A、ASL A 等

3⃣ Immediate

☆8BITの即値(数値)0~255

4⃣ Zeropage

☆ゼロページが対象、$0000~$00ff までをゼロページと言い特別な領域に

 なっていて、高速で準レジスタの役割を果たす、その部分を <$00 のよに

 区別して記述する。 

5⃣ Zeropage、X

☆ゼロページにXレジスタのインデックス付き。

6⃣ Zeropage、Y

☆ゼロページにXレジスタのインデックス付き。

アセンブラ実技編】

*Immediate

LDA #18

STA $6000

⁂10進数の18をAレジスタにロードして $6000 番地に ストアします

 エミュレーターのHex Editorで 確認すると$6000に 16進数の $12が入ってました

 $12 は10進数では 18です。 $6000~$7000は、バッテリーバックアップ

 メモリーです。

 

f:id:chien1956:20200213160211p:plain

【画像】


*Zeropage

LDX  <$88

STX  <$01

⁂Xレジスタに$88をロードし、ゼロページ<$01にストア。

f:id:chien1956:20200213161625p:plain

*Zeropage,X

LDX #$20

LDA <$00、x

⁂Xレジスタに$20をロード、Aレジスタの値をゼロページ+$20にストアする。

*Zeropage,Y

LDY #$20

LDA <$00、y

⁂Yレジスタに$20をロード、Aレジスタの値をゼロページ+$20にストアする。