命令文を知ろう!

プログラミングに使用する要素が分かったところで、次は命令文を紹介します。
こちらにすべての命令に対する解説がございますが、ここではよく使用されるものを取り上げ、具体例を交えてご説明いたします。


レジスタ操作/計算処理

これらは重要な命令文の一つですが、先ほどのリンクで丁寧に解説されております。
追記事項は特にありません。強いて言うなれば、計算処理におけるゼロフラグとキャリーフラグの動きにご注意ください。


ジャンプ

読んで字の如くとはこのこと。なお、下記の使用例における「機械語」については、後述の「実践編」にて解説します。

jp xxyy

pc=xxyyとします。すなわち、次に参照される値はxxyy座標となります。

jr xx

pc=pc+xxとします。ただし、xx≧80のとき、pc=pc-(100-xx)となります。

使用例

座標機械語ニモニック
D000:C3 06 D0jp D006
D003:C3 08 D0jp D008
D006:18 FBjr D003
D008:(略)-

この場合、参照される座標の順番は以下のようになります。
D000(C3)->D001(06)->D002(D0)->D006(18)->D007(FB)->D003(C3)->D004(08)->D005(D0)->D008->…


スタック操作(プッシュ・ポップ)

基礎編で少しだけ触れたsp(スタックポインタ)を扱います。

push xy

任意の2つのレジスタに保存されている2ケタの16進数二つを統合し、4ケタの16進数としてspへ上書きします。

pop xy

spに保存されている4ケタの16進数を上下4bitずつ2ケタの16進数二つに分割し、任意の2つのレジスタへ保存します。
その後、spをpushやcall(後述)される前の値に戻します。

使用例

座標機械語ニモニック
D000:01 23 01ld bc,0123
D003:11 67 45ld de,4567
D006:21 AB 89ld hl,89AB
D009:C5push bc
D00A:D5push de
D00B:E5push hl
D00C:D1pop de
D00D:C1pop bc
D00E:E1pop hl

この場合、spの動きは(元のsp)->0123->4567->89AB->4567->0123->(元のsp)となります。
また、各レジスタの最終的な値はbc=4567,de=89AB,hl=0123です。


サブルーチンコール

これらはジャンプとスタック操作を組み合わせた命令です。
上記二つを使っても同じようなことができるため厳密には覚える必要のない命令なのですが、実際に多用されているほか容量の節約になるため、ついでに覚えてしまいましょう。

call xxyy

pcの値をspへ上書きし、xxyy座標にジャンプします。

ret

spの値をpcに入れます。すなわち、サブルーチンから元の場所に戻る命令です。
その後、spをpushやcallされる前の値に戻します。

使用例

座標機械語ニモニック
D000:CD 05 D0call D005
D003:18 FBjr D000
D005:C9ret

この場合、参照される座標の順番は以下のようになります。
D000(CD)->D001(05)->D002(D0)->D005(C9)->D003(18)->D004(FB)->D000(CD)->…(以下ループ)


応用問題

ここまで学習したことを振り返ってみましょう。

問.以下のコードにおいて、参照される座標の順番を答えよ。

D0003E 02ld a,02
D0023Ddec a
D00318 FDjr nz,-03
D00516 D0ld d,D0
D0071E ECld e,EC
D00993sub e
D00A5Fld e,a
D00B18 02jr +02
D00DC1pop bc
D00EC9ret
D00FD5push de
D010CD 0D D0call D00D
D013(略)-

分かりましたか?答えは以下の通りです(反転)。

D000(3E)->D001(02)->D002(3D)->D003(18)->D004(FD)->D002(3D)->D003(18)->D004(FD)->D005(16)->D006(D0)->D007(1E)->D008(EC)->D009(93)->D00A(5F)->D00B(18)->D00C(02)->D00F(D5)->D010(CD)->D011(0D)->D012(D0)->D00D(C1)->D00E(C9)->D014->…



ここまで来ればあとひといきです。実践編へ行きましょう!


戻る 次へ TOP