[新連載開始]W65C02マイコンボードの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
私としてはW65C02をさわるのは全く初めてです。何から何まで未経験です。さてどうなりますでしょうか。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第7回]
●W65C02アセンブラに変数機能を組み込みました
W65C02アセンブラに変数の機能を組み込みました。
下はテスト中の画像です。

今回はORGの確認もしました。
W65C02のアセンブラルールでは16進定数は先頭に$をつけることになっています。
私としてはアセンブラの定数は基本的に16進数でいいじゃないかと思っていますのでそこのところはちょっと面倒だなあと感じています。
実際の命令のオペランドはルール通りに$をつけることにしました。
最終的には変数定義やORGにも$をつけることになるとは思いますが今はまだテスト中なので変数定義とORGは$なしの16進数にしてあります。
左側がソースプログラムリストです。
abc、xyzは1バイト、zzは2バイトの変数として定義しています。
1バイトか2バイトかは変数自体では区別していません。
値としては16ビットの数として扱っています。
W65C02アセンブラでは$XXの前に#を置くと定数を示し#が無いときはzp(ゼロページのアドレス)として扱います。
変数の値で考えると上位8ビットが00の場合それが定数なのかゼロページアドレスなのか区別できません。
で。
W65C02アセンブラの変数規則としては値が00〜FF(つまり0000〜00FF)の場合にはゼロページアドレスとして扱うことにしました。
上の右側のリストがアセンブルリストです。
lda xyz、adc abcはどちらもゼロページアドレスと解釈されています(命令コード部はA5、75です)。
lda zzは16ビットアドレス(アドレッシングタイプa)と解釈されています(命令コード部はADです)。
ラベル機能も途中まで作りました。
ラベルは末尾に’:’を置いて示します。
このアセンブラは簡易型です。
ラベル行の後ろには’;’(コメント)以外は置けません。
命令は次の行に書きます。
abcxyz:がラベルです。
アドレスは8009です。
次に書いた命令lda zzも同じアドレス8009になっています。
右のコマンドプロンプトに実行画面が表示されています。
デバッグ中ですから余計なものが表示されています。
変数とラベルの値が表示されています。
variend=3は変数の個数です。
その次から3行で変数名とその値を示しています。
lblend=1はラベルの個数です。
その下にラベルabcxyzとそのアドレスが表示されています。
W65C02マイコンボードの製作[第7回]
2026.7.9 upload
前へ
次へ
ホームページトップへ戻る