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


KL5C80A12マイコンボードの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
KL5C80A12はZ80互換の高速高性能8ビットマイクロコントローラです。
残念なことに数年前に生産中止になってしまいました。
しかし当社ではKL5C80A12を使った組込みマイコンボードはまだ健在です。
そのKL5C80A12を使ったND80Z3.5上位互換マイコンボードの製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第28回]


●Z80ラインアセンブラ

Z80アセンブラはND80Z3.5の付属CDROMに入っています。
Windowsのコマンドプロンプト(DOS窓)で使います。
ND80Z3.5をUSB接続する必要はありません。
テキストエディタを使ってZ80ニーモニックでプログラムを書いて、それをファイルとして保存したものを読み込んで、Z80のマシン語(バイナリコード)に変換して、バイナリファイルを作成します。
ちょいと大きなマシン語プログラムを作成するときなどは必需品となります。
しかし時にはそれほど大きなプログラムではなくて10バイトとか20バイトぐらいの短いプログラムを作りたいときがあります。
そんなときにはラインアセンブラのほうが手軽で便利です。

ND80Z3.5にはメモリサイズの関係で搭載することができていませんが、ZBKシステムは十分なメモリサイズがありますので、Z80ラインアセンブラとこのあとで説明するZ80ライン逆アセンブラを標準搭載しています。
今回製作中のKL5C80A12版ND80KL/86ボードのシステムROMにも実装しました。
短いプログラムを書いて即席で実行したいときなど、とても便利です。

百聞は一見にしかずです。
Z80ラインアセンブラで簡単なプログラムを作成してみました。

ふつうにBASICのプログラムの作成や実行などができる状態で AS 開始アドレス[Enter]と入力するとZ80ラインアセンブラが起動します。
AS 8000[Enter]と入力したので、8000を表示して入力待ちになりました。
ここでZ80の命令をニーモニックで入力します。
ルールはオフラインで使うZ80アセンブラの規則に準じます。
Z80アセンブラのソースプログラムは英大文字を使いますがZ80ラインアセンブラは英小文字での入力もできます。

ld hl,$8100[Enter]と入力すると、直ちにマシン語コードに翻訳され、その下に
8000 210081   LD HL,$8100
と表示されて、さらにその次の行に8003が表示されて入力待ちになりました。

Z80ラインアセンブラはラベルも使えます。
ジャンプ先アドレスや変数アドレスなどに使えますが、実際に使うときまでに定義済みである必要があります。
REENT=$1033を先に定義しておいてから、JP REENTを入力しました。
ここはサンプルなのでJP命令の直前で定義しましたが、変数、ラベルの定義は直前である必要はありません。

Z80ラインアセンブラを終了するときは、[Ctrl][B]を入力します。
Z80ラインアセンブラを終了すると、普通のBASICのモードになります。
DMコマンドでメモリの中身を確認してみました。
ちゃんとマシン語プログラムが作成されています。

さっそくJPコマンドで実行してみました。

作成したマシン語プログラムはRAMの8100番地に31を書いて、BASICのリエントリアドレスにジャンプするという簡単なものです。
実行前にCMコマンドで8100番地の内容を確認してから、JP 8000を実行しました。
そのあとでもう一度CMコマンドで8100番地の値が31に書き換わっていることを確認しました。

●Z80ライン逆アセンブラ

今度はZ80ライン逆アセンブラです。
その名の通りラインアセンブラと逆の働きをします。
これも見ていただいたほうが早いと思います。

Z80ライン逆アセンブラは、DA アドレス[Enter]で起動します。
DA 8000[Enter]と入力すると、
8000 210081   LD HL,$8100
と表示して入力待ちになりました。
ここで何かキーを入力すると次の1行が表示されます。

ここでは理解を助けるために先にZ80ラインアセンブラで作成したプログラムを逆アセンブルしましたが、ラインアセンブラで作成したプログラムでなければ逆アセンブルできない、などということはありません。
ただし最初に指定するアドレスは命令の第一コードが置かれているアドレスである必要があります。
たとえば上の例で、DA 8001やDA 8002を指定すると間違った命令に翻訳されてしまいます。
Z80ライン逆アセンブラを終了するときも[Ctrl][B]を入力します。

KL5C80A12マイコンボードの製作[第28回]
2018.7.30upload

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