【问题标题】:lc3 LDR instruction and the value storedlc3 LDR指令和存储的值
【发布时间】:2014-11-10 04:20:02
【问题描述】:

我不明白为什么After instruction “LDR R3, R0, 2” is executed, the value stored in R3 is x370C. 在这条指令中 2 代表什么?它看起来不像一个直接的价值。我知道此时 R0 包含 x370C。有人可以帮忙吗?非常感谢!

.ORIG X3700
 LEA R0, A
 LDI R2, C 
 LDR R3, R0, 2 
 AND R1, R1, #0 
 IN
 ST R0, D 
 JSR  F 
 HALT
 F LD  R1, B
 ADD R1, R1, #1
 BRp F 
 RET

 A .FILL X1234
 B .FILL X370B
 C .FILL X370C
 D .BLKW 2
 E .STRINGZ "ABCD"
 G .FILL X1234
 .END

【问题讨论】:

  • 我好像有一段时间没玩了,等我回答一下这个问题。

标签: assembly load instructions lc3


【解决方案1】:

第二个参数是要加载的基地址的偏移量。

我开始在这里拍一些照片并做一个很好的解释,但我发现了一个有趣的讲座视频,它比文字解释得更好,并且会节省很多时间。

LC3 Instructions - LD, LDR, LDI, LEA

该视频解释了 LC3 加载指令之间的差异,突出了它们之间的差异。

在你的例子中:

你有你的数据:

A .FILL X1234
B .FILL X370B
C .FILL X370C

运行您的代码:

LEA R0, A      -- R0 has the address of A
LDI R2, C      -- R2 has value of which address C has
LDR R3, R0, 2  -- R3 has the value of C 
               -- because R0 has the address of A + 2 positions = C

【讨论】:

  • 谢谢。这很有趣,因为我实际上已经看过那个视频。我知道我们应该将“偏移量”添加到 R0 并将该地址存储到 R3。问题是我不知道如何使用指令中的'2'并将其添加到R0。
  • 对不起,我真的没明白,use the 2 是什么意思?
  • 我的意思是“LDR R3, R0, 2”中的第二个参数是'2',应该是偏移量吧?但是它没有#bef​​ore,所以它看起来不像是立即值。那么我们如何将偏移量添加到 R0 以及 R3 是 x370c 的原因?
  • 啊,我明白了!谢谢!
  • 你能看看这个吗? superuser.com/questions/904324/…
猜你喜欢
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
  • 2014-07-29
  • 2017-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-23
相关资源
最近更新 更多