2026.7.10
前へ
次へ
ホームページトップへ戻る


[新連載開始]W65C02マイコンボードの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
私としてはW65C02をさわるのは全く初めてです。何から何まで未経験です。さてどうなりますでしょうか。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第8回]



●W65C02アセンブラ JMPラベル/JSRラベル

W65C02アセンブラのJMP命令およびJSR命令にラベル機能を組み込みました。
アセンブラの場合この機能は必須です。
ただし今のところjmp a/jsr aのみの対応です。
jmp (a)とjmp (a,X)には未対応です。
この2命令はかなり特殊です。
ジャンプ先をテーブル参照する機能になりますからメモリマップを意識することになると思います。
そういうことならaの記述は16進数でダイレクトに記述するということでよいのでは。
正直なところどういうプログラム場面で使われるのか私にはまだよくわかっていません。
W65C02のプログラムの理解が進むなかでこれもラベル対応があるといいということになればそのように作ることも検討するつもりです。
とにかく今はjmp a/jsr aのみの対応です。
下はテスト中の画像です。

左側がソースプログラムリストです。
jmp、jsrの飛び先としてラベルabcxyzとsub1を記述しました。
なおこれは正しくマシン語に翻訳できるかどうかの確認のために書いたソースプログラムですからプログラムとしては全く意味がありません。
実際のプログラム例として考えるとメインルーチンの流れがサブルーチンにつながっていますからクセツヨの特殊なプログラム以外ではこういう書き方はありません。
あくまでアセンブラ機能のテストのためのプログラムです。
11行と19行にjmp abcxyzがあります。
11行は後方参照です。
つまり11行をマシン語コードに翻訳した時点ではまだラベルabcxyzのアドレスは未定です。
もちろん作成されたマシン語コードプログラムでは後方を参照していても正しいアドレスに変換されます。
右側のリストがアセンブルリストです。
マシン語コードが作成されるとラベルabcxyzのアドレスは800Fになりsub1のアドレスは801Fになります。
11行と19行と20行のオペランド部がそのようになっていることがわかります。
右のコマンドプロンプトに実行画面が表示されています。
アセンブル作業がエラーなく終了すると上記のリストファイルとともにバイナリファイルが作成されます。
コマンドプロンプト画面にはバイナリファイルの内容が16進数で表示されています。
リストファイルの16進数コードがそのまま表示されています。
W65C02のデバッグにはこのバイナリファイルを使います。

W65C02マイコンボードの製作[第8回]
2026.7.10 upload

前へ
次へ
ホームページトップへ戻る