読者です 読者をやめる 読者になる 読者になる

ニャオニャオ21世紀

雑記と、MSXぽいアプリ開発と、ゲーム他の様々なアイデアを公開しています

MSXマシン語入門(Z80 アセンブラ) 勉強レポート  第7回 ロード命令

MSXマシン語勉強

 

今日からマシン語の命令を一つづつやっていきたいと思います。

まず最初はロード命令です。

このロード命令はすべての基礎になるそうです。

では始めます。

 

その前に、以前用意すると言った、マシン語のプログラムをMSXで動かすのに必要な、BASICモニタですがしばらくお待ち下さい。

一応打ち込んではみたのですが、本そのままでは載せることはできないので、

変更をしております。

本当はどっかにあるといいのですが。

 

 前回のブログ:

nyaonyaokun.hatenablog.com

それでは開始〜。

 

ロード命令ですが、

レジスタやメモリにデータを入れる命令になります。

 

簡単な足し算をする場合、

まずレジスタに足される数を入れ、それからそのレジスタに足す数を加えるということ

をするそうです。

 

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レジスタを使うときは素直に使えて、その他のレジスタを使うときは少し特殊と覚えておきましょう。

 

 

とりえずはここまでにしておきます。

次回は、ハンドアセンブルです。

なんか楽しくなっていきそうです!!

 

nyaonyaokun.hatenablog.com