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

ニャオニャオ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つくっつけたことと、数値が上下逆になることくらいですね。

 

ではまた〜