Часть 2 · Продвинутая архитектура · уровни 17–29

Вторая часть собирает из деталей первой настоящий компьютер: дешифратор читает байт инструкции, ROM хранит программу, RAM — данные, а ассемблер переводит текст в машинный код. Финал — «Змейка», работающая на вашем процессоре.

Открыть в игре →Программа курса

Основные идеи части

  • Дешифратор превращает байт инструкции в управляющие сигналы: старшие биты — что делать, младшие — с чем.
  • Гарвардская архитектура: программа и данные хранятся раздельно — программа в ROM, данные в RAM.
  • Ассемблер — язык машины: одна строка — один байт кода в формате «опкод + операнд».
  • Флаги и условные переходы дают программам ветвления и циклы: JZ физически — мультиплексор перед счётчиком команд.
  • Порты ввода-вывода — те же адреса памяти: геймпад, дисплей и ГПСЧ читаются и пишутся обычными командами.

Что вы построите к концу части

К концу части у вас полный 8-битный Harvard-процессор с ассемблером, флагами и портами ввода-вывода — и программы с циклами на нём, вплоть до «Змейки» уровня 29.

Уровни части

  1. 17. Анатомия дешифратора — собрать дешифратор опкода на цепочках AND и проверить распознавание заданного кода Открыть в игре →
  2. 18. ФИНАЛ: Компьютер Ершова — собрать процессор на Harvard-архитектуре и протактировать цикл выполнения инструкции (ROM → дешифратор → АЛУ → аккумулятор) Открыть в игре →
  3. 19. Шаг вперёд (PC+2) — перенастроить счётчик команд на шаг +2 и показать на программе, зачем нужен переменный шаг (word-формат) Открыть в игре →
  4. 20. Двойное чтение — подключить два банка ROM к одному PC и показать двойное чтение опкода и операнда Открыть в игре →
  5. 21. Указатели — использовать регистр IX для косвенной адресации в программе и объяснить роль указателя Открыть в игре →
  6. 22. Конфликт на шине — диагностировать конфликт на шине и восстановить разделение устройств дешифратором адреса Открыть в игре →
  7. 23. Геймпад — написать программу чтения порта ввода и объяснить разницу LDA N и ADD N Открыть в игре →
  8. 24. Ручной пиксель — объяснить протокол memory-mapped портов дисплея (X, Y, пиксель) и зажечь пиксель Открыть в игре →
  9. 25. Проверка на минус — объяснить флаги состояния (доп. код) и написать программу с условным переходом JN Открыть в игре →
  10. 26. Бросок кубика — подключить LFSR как третий источник на шину и получить серию «случайных» чисел, объяснив псевдослучайность Открыть в игре →
  11. 27. Hello, Ports! — читать и править готовую ассемблерную программу под новое условие Открыть в игре →
  12. 28. Движущаяся точка — написать полную программу с переменными в RAM, вводом, ветвлением и циклом Открыть в игре →
  13. 29. ФИНАЛ: Змейка — спроектировать игру «Змейка» на ассемблере: состояние, ввод, отрисовка Открыть в игре →

Номер уровня ведёт в его гайд в библиотеке; «Открыть в игре» — прямо в симулятор на этот уровень.

Что дальше: Часть 3 · Verilog →