ドラクエ風RPGファミコンプログラム講座 アセンブラ入門編
第32回
前回の予告では、文字列表示の予定でしたが
1文字出力ルーチンに変更しました。
*char_print:の仕様
書き込み位置のVRAMアドレスをBUFFにストア後、書き込むDATAを渡す
DATAの受渡し方法はなん通りかあるが、呼ぶ側のサブルーチンの構造に合わせて
使い分ける必要があります、最初のうちは2番目の方法が一番安全でかくじつです。
1.レジスタを使う方法。
2.変数を使う方法。
3.スタックを使う方法。
1)レジスタを使う方法。
*Xレジスタに書き込むDATAをロードーし受渡し
直前にtxaでAレジスタにロードする。
ldx #$02
char_print:
lda Vram_add_hi
sta $2006
lda Vram_add_low
sta $2006
txa ;XレジスタをAレジスタにコピー
sta $2007
rts
2)変数を使う方法。
*Aレジスタに書き込むDATAをロードーしchr_buff
にストアする。
lda #$02
sta chr_buff
char_print:
lda Vram_add_hi
sta $2006
lda Vram_add_low
sta $2006
lda chr_buff
sta $2007
rts
3)スタックを使う方法。
*Aレジスタに書き込むDATAをロードーしphp命令で
スタックに積み込む。
lda #$02
php
char_print:
lda Vram_add_hi
sta $2006
lda Vram_add_low
sta $2006
pla
sta $2007
rts
*次回は、サブルーチンの検証をします。