いよいよマシンコードを書きます。
LDとかを16進数の打ち込む数値にしていきます。
勉強本の続きを読んでいきます。
どうやるのかな〜。興味はつきません。
PS:
当時のMSXプログラマーは必要な情報でしたが、現代のMSXプログラムは、
アセンブラで書くのが主流です。
マシンコードは知らなくてもOKです。
今は、MSX PENで書いています。とても便利^^
うむうむ。
なんか表を見ながら当てはめていくだけみたいです。
拍子抜けです〜。
ちょっと大変ですけど命令変換表を書いていきます。
命令変換表
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
となります。
2バイトの命令ですね。
表横の最後はnとなっていますが、ここは数値が入ります。
8ビットの数値ならなんでもいいそうです。
次にメモリのアドレスを指定する場合ですが
LD (8248H),A
の場合は
32 48 82
となります。
表で見ると
LD(nn),xのところとなります。32 n nと書いてありますが、
82と48のところが逆になっています。
実際にすこしやってみましょう。
LD A,9
LD (D800H),A
というのをマシンコードへ変換します。
これはAレジスタに9をロードして、Aレジスタの内容(9)をD800H番地にロードするものです。
アドレス マシンコード
D000 3E09
D002 3200D8
なんとか出来たと思います。
肩が凝ってしまいますねぇ〜。歳かな^^
では〜。
次のページ
MSX BASIC + マシン語などの情報はこちらへ