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 没有任何解释为什么,我知道我这里有相对寻址模式,但是为什么地址 1002 中的 1474 而不是 2500,在此先感谢您的帮助

4

3 回答 3

2

如果你有:

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

汇编的第一个字将是指令,第二个将是第一个操作数(the 2500)的地址数据,第三个将是立即数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 回答