【问题标题】:How to avoid executing variables in lc3 assembly如何避免在lc3程序集中执行变量
【发布时间】:2015-08-30 07:35:23
【问题描述】:

我在 lc3 汇编编程中迈出了第一步,我注意到每次我尝试在内存中存储一​​个负值时,例如使用“ST”指令,都会出现某种错误。在这个内存位置存储“TRAP xFF”而不是...... 有谁知道我该如何克服它??

【问题讨论】:

  • 您能否发布您的示例代码以及您收到的错误?这将有助于为您的问题提供一些额外的背景。
  • 例如:(斜线代表换行)VAR1 .FILL #5 / VAR2 .FILL #0 / LD R0, VAR1 / NOT R0, R0 / ADD R0, R0, #1 / ST R0 , VAR2
  • lc3模拟器中的错误行是:VAR2 TRAP xFF
  • 好的,这不是错误消息,但这个值与预期相差甚远......我认为

标签: negative-number lc3


【解决方案1】:

您收到该错误是因为您的变量是运行时代码的一部分。通常最好的做法是在 HALT 命令之后将变量放在代码末尾。

.ORIG x3000

MAIN    
LD R0, VAR1
NOT R0, R0
ADD R0, R0, #1
ST R0, VAR2

HALT

VAR1 .FILL #5
VAR2 .FILL #0
.END

您收到这些错误的原因是,当您将数字存储到变量中时,模拟器认为它们是命令。陷阱命令的操作码为 1111,它也是一个负数。当模拟器遇到您的变量时,它无法确定它是哪种类型的 TRAP 命令,因此出现错误。通过阻止模拟器运行您的变量,您将不会收到该错误。

【讨论】:

  • 好的,我改了,现在一切运行顺利。非常感谢!!
  • 很高兴我能帮上忙。如果有帮助,请记住将答案标记为已解决。谢谢
猜你喜欢
  • 2021-04-13
  • 1970-01-01
  • 2012-11-14
  • 2019-11-28
  • 2012-09-29
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多