2017-05-18 94 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

祝你好運!