【问题标题】:Assembly: st r1, r2(r3) -- Isn't this indexed-memory addressing instruction correct? [closed]汇编:st r1, r2(r3) -- 这个索引内存寻址指令不正确吗? [关闭]
【发布时间】:2015-05-31 23:15:50
【问题描述】:

在这个汇编程序代码中,最后一条指令是否正确?在这里与某人发生争执...

ldi r1, #$0001    ;load $1 in r1 register
ldi r2, #$4000    ;load $4000 in r2 register
ldi r3, #$0000    ;load $0000 into re register

st r1, r2(r3)     ;store value of r1 in memory location r2(r3) = $4000($0000)

索引内存寻址指令不正确吗?

【问题讨论】:

  • 你忘了提到什么架构。这对我来说看起来像 avr,在这种情况下它是不正确的。下次请查阅您的架构手册或尝试使用汇编程序。
  • 如果我无所不知,我会知道你使用什么架构,而无需你告诉我。事实上,我必须依靠你,或者猜测。您可能不知道有许多不同的架构,它们都有自己的指令集和寻址模式。对其中一个有效的对其他无效。例如 x86 甚至没有 st 指令或 r1-r3 寄存器。
  • 如果您正在实现自己的架构,那么您可以决定它是否有效以及它将做什么。我们怎么知道?无论如何,我已经回答了你的问题:对于确实有 st 指令的 avr 架构,该表单无效。如果您对此答案不满意,则需要提供更多详细信息。
  • 如果您想在这里提出问题,您需要指定架构。这里的人们可能只对一种或几种架构而不是所有架构都有不同程度的专业知识。很少有人知道很多架构,但即使在那里,也可以做正确的事情来表明这一点。就好像您在询问应用程序编程问题以至少指定操作系统和/或编译器......
  • 作为提示,侮辱那些试图帮助你的人并不是获得好答案的最佳方式。我已经删除了你的那些 cmets。

标签: assembly


【解决方案1】:

一般来说,如果你使用 st r1, M1 那么 r1 的值将被存储到内存位置 M1 中。

在 st r1 的情况下,r1 的 (r3) 值存储到 r3 的内存中

这里有 st r1, r2(r3) 所以 r1 的值将被存储到 (r2+r3) 的内存中

如果我错了,请纠正我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 2013-11-05
    相关资源
    最近更新 更多