微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决Nand2tetris Project4-测试失败-Fill.asm:第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仿真器运行解决方案时,我看不到col2所需的行为。我正在将您的解决方案与我知道是正确的解决方案进行比较,并且看到了不同的行为。

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

enter image description here

这是我希望看到的:

enter image description here

我建议您查看解决方案。

提示:解决方案缺少的代码是填满屏幕的代码。

这就是为什么我认为它不见了:

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

enter image description here

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

祝你好运。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。