我有一个关于pdp-11(模拟器)的小问题,我有这个命令(它从地址1000开始) add 2500,#2500
以下是最初的列表:
register/address - initial value
pc 1000
sp 600
2500 3000我想知道这个小片段到底是如何运行的,在我的小册子中我发现:首先它从地址1000读取信息,在这个地址里面我们有值066727,在我们从地址1002读取数字之后,值必须是2500(因为添加2500,#2500),但是在我的小册子中我有1474而没有任何解释为什么,我知道我有这里的相对寻址模式,但是为什么1474在地址1002里面而不是2500,提前感谢任何帮助
发布于 2010-06-16 01:07:35
ADD 2500,#2500编译为
0: 066727 ; ADD
2: 002474 ; 2500 - 6 (next instruction offset)
4: 002500 ; #2500 (literal value)
6: ... ; next instruction
...
2500: 003000发布于 2012-09-29 09:34:26
如果您有:
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.因为第一个示例将结果存储在指令流中。
发布于 2010-06-07 03:09:45
我不记得所有的寻址模式,但请查看地址1474,看看它是否包含2500。
https://stackoverflow.com/questions/2985509
复制相似问题