0

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

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

4

1 回答 1

1

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

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

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

在此处输入图像描述

这是我希望看到的:

在此处输入图像描述

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

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

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

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

在此处输入图像描述

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

祝你好运。

于 2020-11-23T01:34:45.507 回答