Взломать программу сборки, чтобы почернить экран

Итак, я читаю книгу "Элементы вычислительных систем" (и делаю курс). Я пытаюсь написать программу для взлома, чтобы почернить экран. Вот что у меня есть.

@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

Удачи!

Другие вопросы по тегам