Skip to content
4.7 · Инструкция и машинный код

4.7 · Инструкция и машинный код

Цель. Понять формат инструкции и прочитать/написать первую программу в машинных кодах — пока на бумаге и в симуляторе. Урок-мост из 8 в 9 класс.

🎣 Крючок (5 мин)

На доске столбик чисел: 01 1001, 0010 1010, 0101 0000… — «Это настоящая программа. К концу урока вы будете читать её как текст».

🧠 Теория (15 мин)

Формат: байт = команда

   7 6 5 4   3 2 1 0
  ┌────────┬────────┐
  │ OPCODE │ОПЕРАНД │      старшая половина — ЧТО делать,
  └────────┴────────┘      младшая — С ЧЕМ (адрес/число)

Система команд нашего SAP-1

OpcodeМнемоникаСмысл
0000NOPничего
0001LDA aA ← память[a]
0010ADD aA ← A + память[a]
0011SUB aA ← A − память[a]
0100STA aпамять[a] ← A
0101OUTпоказать A на индикаторе
0110JMP aPC ← a
0111JZ aPC ← a, если флаг Z=1
1111HLTстоп

Заметьте: каждой команде соответствует блок, который вы уже собирали: 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/онлайн):

  1. Прочитать и «выполнить в тетради» готовую программу (таблица трассировки: PC, A, вывод).
  2. Написать свою: сложить числа из ячеек 9 и 10, показать, остановиться. Перевести в машинные коды.
  3. ⭐⭐ Прочитать программу с JZ и понять, что она делает (обратный отсчёт до нуля). Трассировка обязательна.

✅ Чек-лист

  • Разбираю байт на opcode и операнд
  • Написал и оттрассировал свою программу
  • ⭐⭐ Объяснил работу условного перехода JZ