ニャオニャオ21世紀

レトロゲーム(MSX、PCエンジン、セガサターン)と、MSXぽいアプリ開発と、最新ゲーム(PS4、SWITCH)、身体(身体意識など)、ライフハックほか雑記を綴っています

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

 

お久しぶりです。

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

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

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

 

LD A,9

LD (D800H),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   (A000H)  ,  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つくっつけたことと、数値が上下逆になることくらいですね。

 

ではまた〜

 

www.nyaonyao21.com

 

 


「ニャオニャオ21世紀は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。」

当サイトは第三者配信の広告サービス「Google Adsense グーグルアドセンス」を利用しています。 広告配信事業者は、ユーザーの興味に応じた広告を表示するためにCookie(クッキー)を使用することがあります。 Cookie(クッキー)を無効にする設定およびGoogleアドセンスに関する詳細は「広告 – ポリシーと規約 – Google」をご覧ください