Nand2tetris Project4- 测试失败 - of Fill.asm:第 3 行比较失败

Nand2tetris Project4- Test failed - of Fill.asm: Comparison failure at line 3

没有过多提及 Nand2tetris 课程和上传与键盘交互的程序集文件。

基本上这个程序所做的是当按下键盘上的某个键时屏幕变黑,即屏幕的每个像素都应该变黑,而当键盘空闲时屏幕保持白色。

这是我的代码,它在我计算机的硬件模拟器上运行良好,但当我上传它以在 coursera 上提交时失败。

@place
M=0

(LOOP)
@KBD
D=M
@WHITE
D; JEQ
@BLACK
0; JMP


(WHITE)

@place
D=M
@LOOP
D; JLT
@place
D=M
@SCREEN
A=A+D
M=0
@place
M=M-1
@LOOP
0;JMP


(BLACK)

@place 
D=M
@LOOP
D; JGE
@SCREEN
A=A+D
M=-1
@place
M=M-1
@LOOP
0; JMP

我哪里错了?比较失败的原因是什么,我该如何解决? 提前致谢

抱歉,您发布的解决方案没有解决问题。我认为这就是 coursera 拒绝它的原因。

当我 运行 通过汇编程序然后通过 cpu 仿真器解决您的问题时,我没有看到 Fill.asm 所需的行为。我正在将您的解决方案与我知道正确的解决方案进行比较,但我看到了不同的行为。

这是使用您的解决方案按下键盘时 cpu 模拟器的屏幕截图:

这是我希望看到的:

我建议查看您的解决方案。

提示您的解决方案中缺少填充屏幕的代码。

这就是我认为它丢失的原因:

  1. 你的解决方案的第 19 M=0 行是我认为颜色设置为白色的地方
  2. 我将第 19 行更改为 M=-1,将白色设置为黑色
  3. 我希望看到屏幕总是漆成黑色,但相反,我只看到模拟器屏幕左上角有一条黑色的小线,如下所示

提示:你有一个循环((LOOP))重复监听键盘。我希望看到另一个循环((FILL),或其他循环)用白色或黑色填充专用于 SCREEN 的整个内存部分。

祝你好运。