機械語プログラミング
z80editが利用できない場合の実験方法
最終更新日:2021年7月1日(渕田)
大学の電算機演習室ではなくオンデマンド形式で受講しており、自分の環境の違いでどうしてもz80editが利用できないケースでは、以下の方法で実験を行ってください。
ただし、この方法はかなりの部分を独自で考えて理解する必要がありますからハードルは高くなります。
戻る
実験方法
Simple 8-bit
Assembler Simulatorを利用します。
このシミュレータはウェブベースで動作するので、OS環境によらずに利用可能です。またMITライセンスで配布されているため、無償利用が可能です。
このシミュレータに関する説明はCodeブロックの上の(Instruction Set)のリンク先ページにあります。
このシミュレータが実行するCPUはZ80ではなく、仮想のCPUです。
最初にページを開いたときに表示されているコードはサンプルです。これは消して、自分のコードを書き込んでください。ただし、このコードはかなり参考になります。
z80editとの主な違いは以下の通りです。
- CPUインストラクションの違い
- 汎用レジスタはA,B,C,Dの4つだけ。
- PCの代わりにIP。
- フラグはZ,C,Fの3つだけ。
- 使用可能なアドレス空間は256バイト(00番地からFF番地まで)
- したがって、アドレスも8ビットに収まる。
- 間接アドレッシングの指定は ( ) ではなく [ ] を使用する。
- 条件付き分岐命令は、例えば JP NZ ではなく JNZ である。
- I/O命令はないが、出力がメモリのE8番地からの24バイトに割り当てられている。
- 掛け算と割り算も可能(この実験では使わない)
- 停止命令はHALTではなくHLTである。
- シミュレータの操作の違い
- 16進数は 12H ではなく 0x12 で表記する。
- アセンブル結果は右側の「CPU & Memory」に表示される。
- 出力は右側の「Output」に表示される。
- メモリのアドレスは表示されていないが、00~FFである。
- メモリに直接データを書き込むことはできず、DB命令を使用する。
このシミュレータを使用して、z80editを使用して行った実験と同様の実験を行ってください。
各実験における注意点・変更点は以下の通りです。
レジスタによる計算
- 基本的には同じ。
- アセンブル結果はニーモニックの中ではなく、右側の「CPU & Memory」の「RAM」にあるのでそこを示すこと。
- 計算結果はレジスタに表示されるので、「CPU & Memory」の「Registers / Flags」にある。
メモリの利用
- 間接アドレッシングの表記は ( ) ではなく [ ] である。
- メモリへの書き込みはDB命令を使用する。
- 使用するメモリの番地は適当に変更すること。
繰り返しと分岐
間接アドレッシング
- HLレジスタはないが、代わりに汎用レジスタで間接アドレッシングが可能。
- ここではDレジスタを使用する。
- レジスタが足りない場合はメモリを利用する。
I/O処理
- LEDの代わりにOutputを使用する。
- Outputに文字を書き込むことで、LEDが光っている状態を表現すればよい。
- LEDを消すためには00を書き込む。
レポート課題