0

Trap x26 経由で Trap 呼び出しとして使用するサブルーチンを作成しました。サブルーチンのコードはアドレス x3300 にあります。x26 から x3300 のサブルーチンの実際の命令にジャンプする方法がわかりません。ギャップが JSR の PC オフセット パラメータで許可されているよりも大きいためです。x3300 までずっとジャンプできるようにするために、x26 の近くにコードを追加できることはわかっていますが、そうすべきだとは思いません。一般的にトラップを理解する上で何かが欠けていると思います。

これがトラップの私の理解/混乱です。つまり、x0000から-X00FFはトラップベクターテーブルです。たとえば、 を呼び出すTRAP x20と、PC は x20 に移動し、x20 で命令の実行を続行します。(これが間違っている場合はお知らせください!) LC-3 のアドレス x20 にはBRZ x0021、PC を x21 に移動するコマンドがあるため、この時点で混乱しています。x21にはBRZ x52コマンドがあります。このブランチが実行されて x52 と PC に移動すると、そこにコマンドがありTRAP x00ます。Trap 20 のコマンドのほとんどは、これらの (どのように見えるか) ナンセンスなトラップ コマンドに移動するようです。トラップ x00 が実行された後、プログラムは xFD79 に移動します。メモリ内の x00 には別のTRAP x00. 私には、プログラムは xFD79 ではなく x00 に移動する必要があるようです。

誰かが私にこれを説明するのを手伝ってくれますか? トラップが呼び出されると、正確には何が起こっているのでしょうか? 命令の実際のコードがあるメモリ内の別のアドレスに移動してそれを実行しただけだと思いましたが、私が見たものはそれを反映していません。これにより、現在学校のプロジェクトを完了することができなくなっているため、どんな助けも大歓迎です。

ありがとう!

4

1 に答える 1

0

「つまり、x0000 から - X00FF がトラップ ベクター テーブルです。たとえば、TRAP x20 を呼び出すと、PC は x20 に移動し、x20 で命令を実行し続けます。(これが間違っている場合はお知らせください!)」

これは正しいですが、次の文は...

「この時点で私は混乱しています。なぜなら、LC-3 のアドレス x20 には、PC を x21 にする BRZ x0021 コマンドがあるからです」

BRz のように見えるコマンドは、実際には命令ではありません。アドレスです!x0400 はかなり役に立たないコマンドです。PC オフセットがゼロの場合、次の行に進むだけです。代わりにアドレスとして解釈し、トラップ呼び出しの一部としてそのアドレスに移動すると、残りのトラップ命令が見つかります。

于 2014-10-20T08:27:57.193 に答える