以下哪些指令可以引用指令中#1000位置的内存位置?

时间:2015-04-21 17:30:27

标签: memory cpu computer-architecture cpu-architecture

我正在研究练习计算机组织考试的问题

问题: 以下哪些指令可以引用指令中#1000位置的内存位置?
a.ADD
b.LD
c.STR
d.LEA
e。以上所有内容 f。以上任何一个

我的思维过程:

我使用 LC-3作为参考来解决此问题。我使用Reference提及的参考同义词来使问题更清楚。现在我要回答以下哪个指令可以提到指令中#1000位置的内存位置的问题。现在,评估个人选择

       
  • 添加 - 这可以引用距离1000的位置。添加可以从两个寄存器中获取数据,这两个寄存器可以表示任是!!
  •    
  • LD - LD使用PC相对模式,这意味着它有9位用于偏移,或者可以访问距程序计数器寄存器中的地址256位的存储单元(下一条指令的地址)。所以没有!!
  •    
  • STR - 使用Base + Offset模式,因此它访问的内存地址是基址寄存器+ offset6中的地址。但是基址寄存器中的地址已经可以是远离当前指令的1000个存储单元。是的!!
  •    
  • LEA - 计算类似PC Relative LD的地址。所以不行!! (与LD相同的理由)

关闭上述理由,我的最终答案是a.ADD和c.STR。每个人都同意我的答案和理由吗?我错过了吗?

1 个答案:

答案 0 :(得分:2)

我不认为ADD可以在LC-3中直接引用内存。我相信它可以在寄存器上工作(即你需要在执行ADD之前将存储器加载到寄存器中)或者使用即时寄存器。所以:

  • ADD:立即或仅注册寻址 - 无法直接访问内存
  • LD:仅限9位PC相对,不能达到1000
  • 的偏移
  • STR:仅基本+偏移,可以使用适当的基址访问任何地址的内存
  • LEA:仅限9位PC相对,无法达到1000的偏移(并且无论如何都不会真正看到内存)

查看Cyrus Bazeghi / Andrea di Blas / Alex Holloway的这些幻灯片:https://classes.soe.ucsc.edu/cmpe012/Summer08/notes/06_LC3_ISA_markup.pdf。它们显示了通过架构的指令流,这对于理解寻址模式非常有用。