前回はマシンコードの求め方で8ビットのロード命令をやったと思います。
今回は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⚪️⚪️)
上下が入れ替わるということですね。
マシンコードにもしてしまいましょう。
(最初にアップした画像は一部間違いがありました。申し訳ありません)
例によって、表を当てはめるだけです。
LD HL , 8945H は 21 45 89 で
LD BC , 8000H は 01 00 80 です。
数値が逆になることだけ注意してください。
駆け足でしたが、それほど難しくないと思います。
チェックポイントは
BCなどレジスタを2つくっつけたことと、数値が上下逆になることくらいですね。
ではまた〜