ニャオニャオ21世紀

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

MSXマシン語入門(Z80 アセンブラ・機械語) 勉強レポート 第15回 レジスタの値を増減する命令 INC DEC

スポンサーリンク

今回はとても簡単で、便利な命令です。

+1増加するのが、INC  (インクリメント)

-1減少するのが、 DEC (デクリメント)

です。

 

例:ニーモニックは、

① INC  B

レジスタBの中身を1増やします。

 

② DEC  (HL)

HLレジスタでアドレスを指定されるメモリの内容を1減らす命令です。

うん?

ちょっとややこしいですね。

例えばHLレジスタに9000Hが入っていて、

メモリの9000H番地の中に入っている内容から1を引くということです。

 

HL   <--- 中に入っている値は、メモリのアドレス。

(HL) <--- 指定したアドレスの中に入っている値。

ということですね。

DECは、そこから-1と。

 

INCとDECは8ビットレジスタの値を増減するだけでなく、

16ビットレジスタの値も増減します。

 

INC  HL

とか。

この場合、LレジスタがFFHから1増えた場合は、上位のHレジスタが

1増えます。

 

スポンサーリンク

 

 

 

このINCとDECの便利なところは、

Aレジスタ以外のレジスタやメモリの内容に対しても演算ができるところです。

 

使い方として、

HLレジスタにメモリのアドレスを入れているとして、

INC HL

してやればアドレスを順番に増やしていくことができるのです。

D800H番地

D801H番地

D802H番地

D803H番地

 のようにアドレスを変えていけます。

具体例として、

VRAMの画面の画像をいれているアドレスを、ひとつづつ、

メモリにコピーしていったり。

VRAMの一部を、VRAMの別の場所にコピーする時に使えます。

(ループで回してコピーしていく)

このBASIC中のマシン語にもINCを使っています。

 

www.nyaonyao21.com

 

<8ビットのINC>

                  マシン語

INC  A          3C

INC  B          04

INC  C          0C

INC  D          14 

INC  E          1C

INC  H          24

INC  L          2C

INC  (HL)      34

INC  (IX+d)   DD 34 d

INC  (IY+d)   FD 34 d

 

<16ビットのINC>

                  マシン語

INC BC        03

INC DE        13

INC HL        23

INC SP        33

INC IX         DD 23

INC IY         FD 23

 

これの見方は、INC HL(HLレジスタを+1する)をしたいときは、

具体的には、

メモリに、23という値が入ります。

 

マシン語というのは英数字の羅列です。

例えば、先ほどの、

WebMSXでMSX BASICのゲームを作ろう!第13弾

のページの中で、こんなのがでてきます。

 

985 DATA 21082211082A01A000CD4A0
0EBCD4D00EB23130B78B120F12108221
1083201A000CD4A00EBCD4D00EB23130
B78B120F1C9

 

これがマシン語なわけですが、これをメモリに入れて使います。

23というINC HL の命令の箇所がでてきていますね。

 

 

<8ビットのDEC>

                  マシン語

DEC  A        3D

DEC  B        05

DEC  C        0D

DEC  D        15

DEC  E         1D

DEC  H         25

DEC  L         2D

DEC (HL)      35

DEC (IX+d)   DD 35 d

DEC (IY+d)   FD 35 d

 

<16ビットのDEC>

                  マシン語

DEC  BC       0B

DEC  DE       1B

DEC  HL        2B

DEC  SP        3B

DEC  IX         DD 2B

DEC  IY         FD 2B

 

今日のところはここまでです。

それでは〜。

 

スポンサーリンク

 

 

www.nyaonyao21.com

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

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