アセンブリ言語や機械語に触れたことがなかったので、CPUが古いからわかりやすいだろうということで、Apple IIエミュレータで勉強してみることにしました。SFCメディアセンターの次の本を参考にします。
Assembly Language for the Applesoft Programmer (007.64,AS1,4)
他にも、6502 Assembly Languageという本もあったのですが、この本が一番とっつきやすいようだったので、これをもとに勉強することにしました。
Apple IIにはApple Monitorという環境があって、ここでメモリの内容の編集、逆アセンブルができます。Apple Monitorに入るには、BASICのプロンプト]から、
] CALL -151と入力します。すると、*印のプロンプトが現れます。これがApple Monitorです。
ここで、* FBE2.FBEFと入力すると、次のような結果が返ってきます。
FBE2- A0 C0 A9 0C 20 A8
FBE8- FC AD 30 C0 88 D0 F5 60このように、ピリオドをはさんで開始アドレス.終了アドレスと入力すると、その範囲のメモリダンプが表示されます。
メモリ内容の表示に対して、変更は、
* 300: A9 20 85 E6 A9 7F 85 1C 20 F6 F3 8D 57 C0 8D 50 C0 20 1B FD 8D 51 C0 60という風に番地: 内容(16進数) の形式で入力すればそのままメモリに書き込まれます。
- Apple Monitorは、逆アセンブル機能があります。
* 300Lという風に、アドレスの後にLを入力してリターンを押すと、そのアドレス以降いくらかのメモリが逆アセンブルされます。
機械語をメモリにストアしたら、ついに実行です。300Gと入力すると、今メモリに入れた部分が実行されます。番地Gで実行です。
画面の色が変わるのがわかります。Apple Monitorを終了するには、Control-Cを入力してからリターンキーを押します。するとBASICに戻ることができます。