黑客程序集程序使屏幕变黑

时间:2017-05-18 19:10:21

标签: nand2tetris

所以,我正在阅读“计算系统的元素”(并完成课程)这本书。我正在尝试编写一个黑客程序集程序来使屏幕变黑。这就是我所拥有的。

@16384
D=A
@current
M=D

@24576
D=A
@end
M=D

@current
D=M

(BEGIN)
@end
D=M-D

@END
D;JEQ
@current
D=M 
A=M
M=1
A=A+1
D=A
@current
M=D

@BEGIN
0;JMP

(END)
@END
0;JMP

出现了一些像素,但是a)非常缓慢; b)它并不像整个屏幕被填充一样出现。有没有办法改进代码?

1 个答案:

答案 0 :(得分:2)

仅仅给你答案并不合适,但这里有一些技巧可以帮助你。

  • 虽然HACK符号区分大小写,但使用@end和@END代表两个 不同的事情是不好的风格,因为它有混乱的风险。

  • 预定义符号SCREEN可能有用。

  • 您必须在屏幕存储区中设置每个16位字的所有位。 M = 1只设置一位。

  • 您可能会发现保留一个计数器更方便,您可以保留剩余的循环数而不是结束指针值。

  • 请记住,您可以将操作结果存储在多个目的地中,如MD = M-1。这很方便。

  • 查看讲座4注释,了解循环示例。 http://www.nand2tetris.org/lectures/PDF/lecture%2004%20machine%20language.pdf

祝你好运!