破解汇编程序使屏幕变黑

hack assembly program to blacken the screen

所以,我正在阅读计算系统的元素这本书(并正在学习这门课程)。我正在尝试编写一个黑客汇编程序来黑屏。这是我得到的。

@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) 看起来不像是整个屏幕都被填满了。有没有办法改进代码?

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

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

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

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

  • 您可能会发现,与结束指针值相比,保留剩余循环数的计数器更方便。

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

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

祝你好运!