ニャオニャオ21世紀

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

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

 

お久しぶりです。

最近は体調が悪く、更新を怠っていましたが、また再開していきたいと

思います。宜しくお願いします。

前回はマシンコードの求め方で8ビットのロード命令をやったと思います。

 

LD A,9

LD (0D800H),A

とかいうやつですね。

 

nyaonyaokun.hatenablog.com

 

 

今回は16ビットならどうなるかというところを読みました。

それほど難しくありませんでした。

 

16ビットのデータをどうやって扱えばいいのかというところで、

B、C、D、E、H、Lのレジスタは8ビットのデータを扱いますので

困ってしまうわけです。

 

そこで2つのレジスタをくっつけて使うという方法を使います。

B,C,D,E,H,Lのような8ビット汎用レジスタを、

BC,DE,HLと2つつなげたものを使います。

また、

16ビット専用のIX,IY,SPのレジスタも使います。

 

簡単に例を書きます。

 

16ビットのデータをレジスタに入れる場合:

ニーモニックの書き方は、(LDとかで書くやつでしたね)

LD     DE , 8945H

などと書きます。

書き方は今までとさほど違いはないですね。

8945をDEに入れるみたいな感じで、

詳しく書くと、

89HをDレジスタへ入れて、45HをEレジスタに入れることとなります。

 

他の例も書きます。

LD     BC  ,  9

Bレジスタに00Hが入り、Cレジスタに09Hが入ります。

 

もう一つ例は、

LD   IX , 9435H

これはIXと言うレジスタに、9435Hが全て入ります。

 

アドレスに値を入れる場合というのもありましたね。

それはどうなるか書きますと、

LD   (0A000H)  ,  BC

A000H番地からの2バイトにBCレジスタの内容を入れます。

その場合注意することがあります。

上位のBレジスタの内容はA001H番地に入り、

下位のCレジスタの内容がA000H番地に入ります。

 

A000H   C⚪️⚪️

A001H   B⚫️⚫️

 

BC レジスタ ( B⚫️⚫️   C⚪️⚪️)

上下が入れ替わるということですね。

 

 

 

マシンコードにもしてしまいましょう。

f:id:nyaonyaokun:20161105162223j:plain

    (最初にアップした画像は一部間違いがありました。申し訳ありません)

例によって、表を当てはめるだけです。

LD  HL , 8945H は 21  45  89 で

LD  BC , 8000H は 01  00  80 です。

 

数値が逆になることだけ注意してください。

 

駆け足でしたが、それほど難しくないと思います。

チェックポイントは

BCなどレジスタを2つくっつけたことと、数値が上下逆になることくらいですね。

 

ではまた〜