nand 2 俄罗斯方块 ASM“预期表达”

use*_*675 3 assembly nand2tetris

我目前正在尝试完成Nand to Tetris课程 ( Fill.asm)第 4 章中的项目。但是,汇编程序给了我以下错误:

“在第 3 行,预期表达”

我不确定我做错了什么……但下面是我的代码片段:

@i
M=1
@sum
M=8192
(END)
@END
0,JMP
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么我在第 3 ( @sum)行收到此错误?

Hob*_*dee 7

我不知道为什么第 3 行会出现错误,但您不能直接将值设置为第 4 行的内存地址。您可以像第 2 行一样从 ALU 中强制输出“1”,但是有如果不先输入“8192”,就无法将其强制退出。您必须先将“8192”的值赋给A-寄存器,然后将A-寄存器存储到D-寄存器,然后选择内存地址,然后将D-寄存器存储在那里。


pun*_*lly 5

您看到的错误是因为您无法将值“8192”直接放入@sum。

这是我为解决此问题而编写的代码:

@8192  // number of pixels on a screen divided by 16-bit address (256 x 512 / 16)
D=A    // D = total number of pixels
@sum
M=D    // assigns sum with value of 8192
Run Code Online (Sandbox Code Playgroud)