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

ニャオニャオ21世紀

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

MSXマシン語入門(Z80 アセンブラ) 勉強レポート  第8回 マシンコードの求め方

 

いよいよマシンコードを書きます。

LDとかを16進数の打ち込む数値にしていきます。

 

勉強本の続きを読んでいきます。

どうやるのかな〜。興味はつきません。

 

前回のブログ:

nyaonyaokun.hatenablog.com

 

 

 

うむうむ。

なんか表を見ながら当てはめていくだけみたいです。

拍子抜けです〜。

 

ちょっと大変ですけど命令変換表を書いていきます。

 

f:id:nyaonyaokun:20151114042011j:plain

命令変換表

8ビットロード

 

       x>   |  A     B     C    D     E     H    L   (HL)  (BC) (DE) (IX+d) (IY+d) (nn)    n      I      R  

====== |=========================================================

LD A,x   |  7F   78   79   7A   7B   7C  7D   7E    0A    1A   DD      FD     3A    3E   ED   ED

              |                                                                   7E       7E     n      n     57     5F

              |                                                                    d          d       n

--------- |-----------------------------------------------------------------------------------------

LD B,x   | 47   40   41    42   43   44   45   46     /       /       DD     FD       /    06   /      /

              |                                                                         46      46             n

              |                                                                         d        d   

----------------------------------------------------------------------------------------------------

LD C,x   | 4F   48   49    4A  4B  4C   4D   4E    /       /       DD    FD        /    0E  /   /

              |                                                                        4E     4E               n

              |                                                                         d       d

----------------------------------------------------------------------------------------------------

LD D,x   | 57   50    51   52   53   54    55   56     /        /        DD   FD       /      16 /  /

              |                                                                          56    56                n

              |                                                                           d      d

----------------------------------------------------------------------------------------------------

LD E,x   | 5F   58    59   5A   5B   5C   5D   5E     /         /       DD   FD      /       1E /  /

              |                                                                          5E   5E                n

              |                                                                          d      d          

----------------------------------------------------------------------------------------------------

LD H,x   | 67  60    61    62   63    64    65    66     /        /        DD   FD      /        26 /  /

              |                                                                           66    66                n

              |                                                                           d      d

----------------------------------------------------------------------------------------------------

LD L,x   | 6F   68   69    6A  6B   6C   6D    6E      /         /     DD   FD       /       2E  /  /

             |                                                                           6E   6E                 n

             |                                                                          d      d

----------------------------------------------------------------------------------------------------

LD(HL),x|77  70   71    72   73    74    75      /        /         /     /      /         /          36 /  /

             |                                                                                                        n   

----------------------------------------------------------------------------------------------------

LD(BC),x|02

----------------------------------------------------------------------------------------------------

LD(DE),x|12

----------------------------------------------------------------------------------------------------

LD(X+d),x|DD DD DD DD  DD   DD  DD      /       /         /        /        /        /          DD /  /

              |  77  70  71  72   73    74   75                                                             36

              |   d   d    d    d     d      d     d                                                               d

              |                                                                                                          n

---------------------------------------------------------------------------------------------------

LD(Y+d),x|FD  FD  FD FD  FD    FD   FD     /     /        /          /        /       /           FD  /  /

               | 77  70   71  72  73    74    75                                                            36

               | d    d     d    d    d     d      d                                                               d

               |                                                                                                        n

----------------------------------------------------------------------------------------------------

LD(nn),x|32

             | n

             | n

----------------------------------------------------------------------------------------------------

LD I,x   | ED

             | 47

----------------------------------------------------------------------------------------------------

LD R,x  | ED

             | 4F

----------------------------------------------------------------------------------------------------

 

この表の見方ですが

LD  B,L

と書きたい場合は 45となります。

LD  A,9だと

3E 09

となります。

バイトの命令ですね。

表横の最後はnとなっていますが、ここは数値が入ります。

8ビットの数値ならなんでもいいそうです。

 

次にメモリのアドレスを指定する場合ですが

LD  (8248H),A

の場合は

32 48 82

となります。

 

表で見ると

LD(nn),xのところとなります。32 n nと書いてありますが、

82と48のところが逆になっています。

 

実際にすこしやってみましょう。

LD A,9

LD (0D800H),A

というのをマシンコードへ変換します。

これはAレジスタに9をロードして、Aレジスタの内容(9)をD800H番地にロードするものです。

 

アドレス  マシンコード

D000              3E08

D002              3200D8

 

なんとか出来たと思います。

肩が凝ってしまいますねぇ〜。歳かな^^

 

 

では〜。

 

nyaonyaokun.hatenablog.com