2017-05-18 46 views
-1

所以,我正在阅读这本书中的计算系统元素(和做课程)。我正在尝试编写一个黑客程序来黑屏。这是我得到的。黑客组装程序使屏幕变黑

@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

只给你答案并不合适,但这里有一些提示可能会帮助你。

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

  • 有一个可能证明有用的预定义符号SCREEN。

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

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

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

  • 查看循环示例的讲义4笔记。 http://www.nand2tetris.org/lectures/PDF/lecture%2004%20machine%20language.pdf

祝你好运!