为什么x3103最后的值为x1482

时间:2017-09-30 17:52:58

标签: lc3

编辑:原来的问题是这个

假设从下面开始将以下LC-3程序加载到内存中 位置x30FF:

x30FF 1110 0010 0000 0001

x3100 0110 0100 0100 0010

x3101 1111 0000 0010 0101

x3102 0001 0100 0100 0001

x3103 0001 0100 1000 0010

如果程序被执行,那么R2中的值是什么 执行?

x30FF 1110 0010 0000 0001; R1&lt; - PC&#39; + 1; R1 < - x3101

x3100 0110 0100 0100 0010; R2&lt; - mem [R1 + 2]; R2&lt; -mem [x3103] = x1482

x3101 1111 0000 0010 0101; TRAP x25 = HALT

x3102 0001 0100 0100 0001; x1441

x3103 0001 0100 1000 0010; x1482

问题是程序结束时R2的内容是什么

在这个问题上,我理解一切,直到x3100

但是我不明白mem [R1 + 2]的含义以及x3102在寄存器2中的x1441以及x3103的值是x1482的方式。

据我所知,任何时候都没有任何内容加载到R2中。

x1441和x1482来自哪里?

有人可以解释一下R2中有x1482吗?

1 个答案:

答案 0 :(得分:1)

查看您发布的机器语言。

LEA R1,1的第一条指令只是将PC + 1存储到R1中。由于在执行指令时PC将为x3100,因此x3101存储在R1中。

第二条指令是LDR R2,R1,2,它将取R1的值加2  然后从内存加载从前一次计算形成的地址并将其存储在R2中。 R1的值是x3101,x3101 + 2是x3103,因此地址x3103处的任何内容都将存储在R2中。由于您发布了x3103包含存储在R2中的x1482。

短语mem [R1 + 2]表示从内存加载计算出的地址,取R1的值并加2。

从编辑开始,是的x1441和x1482似乎只是数据。