4.7 · Инструкция и машинный код
Цель. Понять формат инструкции и прочитать/написать первую программу в машинных кодах — пока на бумаге и в симуляторе. Урок-мост из 8 в 9 класс.
🎣 Крючок (5 мин)
На доске столбик чисел: 01 1001, 0010 1010, 0101 0000… — «Это настоящая программа. К концу урока вы будете читать её как текст».
🧠 Теория (15 мин)
Формат: байт = команда
7 6 5 4 3 2 1 0
┌────────┬────────┐
│ OPCODE │ОПЕРАНД │ старшая половина — ЧТО делать,
└────────┴────────┘ младшая — С ЧЕМ (адрес/число)Система команд нашего SAP-1
| Opcode | Мнемоника | Смысл |
|---|---|---|
| 0000 | NOP | ничего |
| 0001 | LDA a | A ← память[a] |
| 0010 | ADD a | A ← A + память[a] |
| 0011 | SUB a | A ← A − память[a] |
| 0100 | STA a | память[a] ← A |
| 0101 | OUT | показать A на индикаторе |
| 0110 | JMP a | PC ← a |
| 0111 | JZ a | PC ← a, если флаг Z=1 |
| 1111 | HLT | стоп |
Заметьте: каждой команде соответствует блок, который вы уже собирали: LDA — регистр (3.5), ADD/SUB — ALU (4.4), JMP — PC с ~LOAD (4.6), JZ — тот же прыжок, разрешённый флагом Z (4.3). Процессор — это ваши блоки + расписание их включения.
Читаем программу с доски
0001 1001 = LDA 9; 0010 1010 = ADD 10; 0101 0000 = OUT; … — класс декодирует хором.
🔧 Практика (20 мин)
На бумаге + проверка в симуляторе (эмулятор SAP-1 в CircuitVerse/онлайн):
- Прочитать и «выполнить в тетради» готовую программу (таблица трассировки: PC, A, вывод).
- Написать свою: сложить числа из ячеек 9 и 10, показать, остановиться. Перевести в машинные коды.
- ⭐⭐ Прочитать программу с JZ и понять, что она делает (обратный отсчёт до нуля). Трассировка обязательна.
✅ Чек-лист
- Разбираю байт на opcode и операнд
- Написал и оттрассировал свою программу
- ⭐⭐ Объяснил работу условного перехода JZ