我对pdp-11(模拟器)有一个小问题,我有这个命令 (它从地址1000开始) 加2500,#2500
和这个初始清单:
register/address - initial value
pc 1000
sp 600
2500 3000
我想知道这个小片段是如何运行的,在我的小册子中我发现:
首先它从地址1000读取信息,在我们从地址1002读取数字后,在这个地址中我们有值066727,并且值必须是2500(因为添加2500
,#2500),但在我的小册子中我有1474没有任何解释为什么,我知道我在这里有相对寻址模式,但为什么1474在地址1002而不是2500,提前感谢任何帮助
答案 0 :(得分:2)
如果你有:
add 2500,#2500 ;add content of location 2500 to immediate value.
汇编的第一个字是指令,第二个是地址数据
对于第一个操作数(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.
第一个例子将结果存储在指令流中。
答案 1 :(得分:0)
我不记得所有寻址模式,但请查看地址1474并查看它是否包含2500。
答案 2 :(得分:0)
ADD 2500,#2500
编译为
0: 066727 ; ADD
2: 002474 ; 2500 - 6 (next instruction offset)
4: 002500 ; #2500 (literal value)
6: ... ; next instruction
...
2500: 003000