【问题标题】:Nand2tetris Project4- Test failed - of Fill.asm: Comparison failure at line 3Nand2tetris Project4- 测试失败 - Fill.asm:第 3 行比较失败
【发布时间】:2021-01-31 13:00:12
【问题描述】:

没有过多提及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

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

【问题讨论】:

    标签: assembly keyboard-events nand2tetris low-level-code


    【解决方案1】:

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

    当我通过汇编程序和 cpu 模拟器运行您的解决方案时,我看不到 Fill.asm 所需的行为。我正在将您的解决方案与我认为正确的解决方案进行比较,并且我看到了不同的行为。

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

    这是我希望看到的:

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

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

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

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

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

    祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-30
      • 1970-01-01
      • 1970-01-01
      • 2017-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多