.bank 0 .org $0000 ; $0000番地から label1: .db 0 ; RAMの$0000番地をlabel1とする。初期値は持たせられない。 byte1: .db 0 ; RAMの$0001番地をbyte1とする。初期値は持たせられない。 .org $8000 Start: ; ここからはプログラムROM領域。プログラムと初期データを記述する。 label1Init: .db 10 ; プログラムROM領域にlabel1の初期値を配置。 byte1Init: .db 20 ; プログラムROM領域にbyte1の初期値を配置。ROM領域の初期化は、第2章で、バンク1に.dw(2バイト・ワード)で割り込みテーブルを初期化したのと同じ要領です。 ちなみに、$0000〜$07FFのRAM領域に値を書いて初期化することはできません。ROMからロード・ストアしてください。 また、ROM領域にストアして値を更新することはできません。
ラベルを指定すればこの初期値を利用できます。
lda label1 ; Aにlabel1の値をロードする ldx label1 ; Xにlabel1の値をロードする ldy label1 ; Yにlabel1の値をロードする lda byte1 ; Aにbyte1の値をロードするRAM領域であれば、値を更新することも出来ます。アセンブラ以外の言語の変数のように使えるということです。
sta label1 ; Aの値をlabel1($0000)にストアする stx label1 ; Xの値をlabel1($0000)にストアする sty label1 ; Yの値をlabel1($0000)にストアする stx byte1 ; Xの値をbyte1($0001)にストアする
inc label1 ; label1を1加算 dec label1 ; label1を1減算また、$0000~$00FFまでをゼロページと呼び、このRAM領域に対しては以下のようなアドレスの1バイト指定アクセスが可能です。
lda <$00 ; $0000の値をAにロード inc <$00 ; $0000の値を1加算しかしこれではさっきのラベルよりも分かりにくいですね。でもラベルのような記述も可能です。
label1 = $00 ; ゼロページアドレス名を定義 lda <label1 ; $0000の値をAにロード inc <label1 ; $0000の値を1加算ちなみにスタック領域には$0100~$01FFの1ページが使用されますが、今は扱いません。
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||