Взломать программу сборки, чтобы почернить экран
Итак, я читаю книгу "Элементы вычислительных систем" (и делаю курс). Я пытаюсь написать программу для взлома, чтобы почернить экран. Вот что у меня есть.
@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
Некоторые пиксели появляются, но а) очень медленно и б) не похоже, что весь экран заполняется. Есть ли способ улучшить код?
1 ответ
Не совсем уместно просто дать вам ответ, но вот несколько советов, которые могут помочь вам на вашем пути.
Хотя символы HACK чувствительны к регистру, использование @end и @END для двух разных вещей - плохой стиль, потому что это может привести к путанице.
есть предопределенный символ ЭКРАН, который может оказаться полезным.
Вы должны установить все биты в каждом 16-битном слове в области памяти экрана. М =1 устанавливает только один бит.
Может оказаться более удобным вести счетчик количества оставшихся циклов, а не конечного значения указателя.
Помните, что вы можете сохранить результат операции в нескольких местах назначения, как в MD=M-1. Это удобно
Просмотрите лекцию 4 примечания для примера цикла. http://www.nand2tetris.org/lectures/PDF/lecture%2004%20machine%20language.pdf
Удачи!