【问题标题】:NAND2Tetris VM TranslatorNAND2俄罗斯方块虚拟机翻译器
【发布时间】:2016-08-23 10:09:02
【问题描述】:

如果指向堆栈中下一个位置的指针在 Ram[SP]/[0] 中被 raved,我如何指示 hack 中的计算机打开该位置? 我试过了

@0
D=M
@D

但它没有打开存储在 Ram[0] 中的地址 如何让它访问存储在 Ram[0] 中的 ram 地址 谢谢

【问题讨论】:

  • “打开地址”是什么意思?另外,您将使用 Ram[0] for 的值做什么(将其存储在 RAM 中的其他位置?执行条件跳转?...)

标签: assembly nand2tetris


【解决方案1】:

您使用 A/M 寄存器间接通过 ram 位置。

@SP  // loads the A register with the value SP (SP predefined to 0)
A=M  // loads the A register with the contents of MEM[0] (the stack pointer)
D=M  // loads D with the contents of MEM[Stack]

@D 将使用符号位置 D 的内容加载 A 寄存器,这将由汇编器自动分配。 @D(地址)和 D(寄存器)不是一回事,因此使用 @D 不是一个好主意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    相关资源
    最近更新 更多