ニャオニャオ21世紀

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

スポンサーリンク

MSXマシン語入門(Z80 アセンブラ・機械語) 勉強レポート 第22回 ジャンプ命令

スポンサーリンク

今回はジャンプ命令です。

BASICではGOTOですね。

現代の言語には失われた命令ですw

GOTOとかって評判悪いですからね〜。やっぱりややこしくなって

しまうのが原因ですかね。

しかし大切な命令です。

 

ジャンプ命令には2種類あるそうです。

・無条件ジャンプ

・条件ジャンプ

 

まぁこれは文字のとおりですね。

いつでもジャンプと、ある条件が成り立った時にジャンプ。

 

絶対アドレスジャンプ

ジャンプには絶対アドレスジャンプと、相対アドレスジャンプというのが

あるそうです。

まず絶対アドレスジャンプの説明から。

アドレスを指定して、そこに飛んでいくのが絶対アドレスジャンプ。

GOTOの行指定に似ていますね。

 

JP     9823H

 

などと書きます。

この例は、9823H番地に飛べという命令です。

 

ニーモニックでプログラムを書く時は(ニーモニックとは、

LD とか CALLとか人間のわかりやすいように書くのでしたね )、

何番地というアドレスを知るのは難しいです。

アセンブルしていって、命令を1つ1つアドレスに当てはめていって

初めてわかるものです。

 

そこでラベルで書きます。

                      JP    KEYTEST2  

                      LD   A, 41H

                      CALL  CHPUT                

KEYTEST2 :  RET

 

といったふうに。

ラベルはCALL命令(サブルーチン)のときに出てきました。

 

 

相対アドレスジャンプ

JR    LABEL

 

などと書きます。

ニーモニックで書く時は上記の ように書くだけですが、

ハンドアセンブルする時は、

JR命令のあるアドレスからラベルのアドレスまで何バイト離れているか

を書きます。

 

相対アドレスジャンプというのは、今の位置から何バイト離れているかを

書くジャンプ命令ということですね。

 

D000  18   .....   JR    LS4

D002

 ↓

D034  81 ......   LS4 :  ADD  A,C

 

という風にあった場合、

何バイト離れているかを出すのは、

D034H - D002H = 32H

と出します。

(この例だと、D001 に32Hを書きます )

 

アドレスの上の方に戻る場合もあります。

その場合は、マイナスをつけます。

10進数で-45の場合だと、補数でD3Hとなります。

(私の場合は、計算はややこしいし面倒なので、WEBにある16進数の計算サイトで

ぱぱっと16進数にしてしまいます;

2進数、8進数、10進数、16進数相互変換ツール

を使います)

 

マシンコードは次回に書きます。

まだ、条件ジャンプを説明していないので、その時にまとめて。

 

 

まとめ

ジャンプには

・絶対アドレスジャンプ

・相対アドレスジャンプ

があるということでした。

GOTOのようにアドレスを指定するのと、

自分からどれくらい離れているかを書くのでした。

 

今日はここまでです。

 

 

いつかマシン語でゲームを作れるといいなぁと思ってやっています。

目標はテープ版ハイドライド1 または、テープ版トリトーンですかねぇ〜。

あー作りたいなぁ。

 

スポンサーリンク

 

 

 

www.nyaonyao21.com


スポンサーリンク

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

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