プロが教える店舗&オフィスのセキュリティ対策術

 いつもお世話になっています。
今回もよろしくお願いします。

 今、マイクロコンピュータのZ80を使用して実験を行っています。
それの相対ジャンプについて教えてください。
 相対ジャンプの動作はPC+e(e:ディスプレイスメント)で、機械コードは18e-2となっているんですが、なぜ「-2」としなければならないのかがわかりません。
 
 ご存知の方がいたら教えてください。よろしくお願い致します。
足りなければ補足させていただきます。

A 回答 (2件)

ジャンプを実行タイミングには既に自分自身の命令を実行しているのでその分の-2をしてやる必要があります。

    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼と締め切るのを忘れていました。
遅くなってしまい申し訳ありませんでした。

お礼日時:2006/04/12 17:55

プログラム実行中の大まかな流れとして


1 PCの示すアドレスから命令を読む。
2 その命令のバイト数分だけPCに加算する。
3 読み込んだ命令を実行する。
4 1 に戻る。

ここで大事なのは、命令を実行する前にPCに加算している事です。
絶対ジャンプの場合は、PCにアドレスを代入するだけで次の命令はそのアドレスから読み込んで実行しますが
相対ジャンプの場合は、その時のPCを基準にして前後に飛びますので、
#1のかたの回答にあるように、命令実行時に既に加算された分を引いてやる必要があります。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼と締め切るのを忘れていました。
遅くなってしまい申し訳ありませんでした。

お礼日時:2006/04/12 17:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!