今日からマシン語の命令を一つづつやっていきたいと思います。
まず最初はロード命令です。
このロード命令はすべての基礎になるそうです。
では始めます。
その前に、以前用意すると言った、マシン語のプログラムをMSXで動かすのに必要な、BASICモニタですがしばらくお待ち下さい。
一応打ち込んではみたのですが、本そのままでは載せることはできないので、
変更をしております。
本当はどっかにあるといいのですが。
(ちょっと用意できませんでした。ごめんなさい)
追伸: MSXPENでアセンブラを書くといいのを知りました(・∀・)
それでは開始〜。
ロード命令ですが、
レジスタやメモリにデータを入れる命令になります。
簡単な足し算をする場合、
まずレジスタに足される数を入れ、それからそのレジスタに足す数を加えるということ
をするそうです。
Z80のレジスタには8ビットのものと16ビットのものがあります。
まずは8ビットのロード命令からやっていきます。
8ビットロード命令
8ビットのデータをロードすることです。
まあ、普通ですね。
8ビットのレジスタは何かと言うと、アキュームレータと汎用レジスタです。
なんだったっけ?と思いますよね。
思い出してみましょう。
アキュームレータというのがAレジスタで、汎用レジスタというのがBからLまでの
レジスタです。
演算は通常Aレジスタで行われるそうです。
AレジスタにBレジスタの内容を足したりという使い方がされているのでした。
8ビットのデータというと0から255までの数値です。
ロード命令についてみていきます。
LD A , 9 Aレジスタに9をロードします。
LD B , H BレジスタにHレジスタの値をロードします。
LDのすぐ後にくるレジスタが、値が入るレジスタです。
これでいうとAとかBですね。
そのあとの値などが移す値となります。これでいうと9 ,Hですね。
ここで注意するのが、入れたものがレジスタということです。
レジスタの値は実際にプログラマーが見ることはできません。
そこでレジスタの値をメモリに移します。
メモリの値なら自由に見ることができますからね!
LD (3943H) , A
Aレジスタの値をメモリの3943H番地にロードします。
括弧でくくるとメモリのアドレスとなるようです。
それでメモリのアドレスを直接書く場合は、Aレジスタを使わないといけないようです。
AレジスタのところにBレジスタやCレジスタは書けません。
それと値を直接入れることもできません。Aレジスタの位置に6とか数値を置くこと
もできないそうです。
Aレジスタは特殊ですね〜。それだけ大切なレジスタと言えそうです。
( ちなみに
LD A , (9898H)
とすると、メモリのアドレス9898Hに入っている値をAレジスタにいれます。)
それで、Aレジスタ以外に値や他のレジスタを使いたいときもでてきますよね。
そういったときは
LD (HL) , 6 (値を直接入れる場合)
16ビットのHLレジスタに、メモリのアドレスを入れて置いて、6という数値をいれるのです。
直接アドレスは入れれないけど、前もってアドレスをHLレジスタにいれておけばいいわけですね。
( LD D , (HL)
とすると(HL)レジスタに入っている内容が8909Hなら、アドレス8909番地の内容を
Dレジスタにいれます。)
しかしややこしいですね。
まあAレジスタを使うときは素直に使えて、その他のレジスタを使うときは少し特殊と覚えておきましょう。
とりえずはここまでにしておきます。
次回は、ハンドアセンブルです。
なんか楽しくなっていきそうです!!
次のページ
MSX BASIC + マシン語などの情報はこちらへ