0

pdp-11(シミュレーター)について少し質問があります。このコマンド(アドレス1000から始まります)add 2500、#2500があります。

そしてこの最初のリスト:

register/address - initial value
pc                 1000
sp                 600
2500               3000

そして、この小さなスニペットがどのように正確に実行されるかを知りたいのですが、私の小冊子で、最初にアドレス1000から情報を読み取り、このアドレス内に値066727があり、アドレス1002から番号を読み取った後、値は2500でなければなりません。 (add 2500、#2500のため)、しかし私の小冊子には理由の説明がない1474があります、私はここに相対アドレッシングモードがあることを知っていますが、なぜ1474はアドレス1002の中にあり、2500ではありません、助けてくれてありがとう

4

3 に答える 3

2

あなたが持っている場合:

    add     2500,#2500      ;add content of location 2500 to immediate value.

アセンブルされた最初のワードは命令、2番目は最初のオペランド(2500)のアドレスデータ、3番目は即値になります2500。最初のオペランドのPC相対アドレッシングモードは、PCの値を、オペランドのアドレスを取得するために指定された値に加算します。2500これは、その時点でのPCとの差になります(1474オフセットを読み取るための増分後)。

1004 + 1474 = 2500, the address of the data.

通常、次のことを行います。

    add     #2500,2500       ;add 2500 to the word at location 2500.

最初の例として、結果を命令ストリームに保存しました。

于 2012-09-29T01:34:25.890 に答える
0
ADD 2500,#2500

次のようにコンパイルします

    0:      066727 ; ADD
    2:      002474 ; 2500 - 6 (next instruction offset)
    4:      002500 ; #2500 (literal value)
    6:      ...    ; next instruction
  ...
 2500:      003000
于 2010-06-15T17:07:34.630 に答える
0

すべてのアドレッシングモードを思い出せませんが、アドレス1474を見て、2500が含まれているかどうかを確認してください。

于 2010-06-06T19:09:45.293 に答える