126. ORA, непосредственная адресация
предоставить ORA immediate как опкод ``0x09``.
Урок 126 из 356 · tests/chapter_01_cpu/test_126_ORA_immediate.py
Зачем нужен этот шаг
Опкод непосредственной адресации предоставляет ORA для выполнения CPU с байтом-литералом и проверяет, что декодирование делегирует обработку результата и флагов общему примитиву.
На этом шаге, после того как урок 125 создаёт `or_a, внесите следующие дополнения в emulator/cpu/opcodes.py`:
from emulator.cpu.instructions import (..., and_a, or_a)
def ora_immediate(cpu: CPU):
or_a(cpu, immediate(cpu))
OPCODE_TABLE = {
...
0x09: ora_immediate,
}`emulator/cpu/addressing_modes.py::immediate напрямую возвращает байт, полученный через CPU.fetch_byte. instructions.or_a` сохраняет A | value и изменяет только Z/N; флаг переноса/переполнения и память остаются неизменными, а опкод плюс операнд продвигают PC на два байта.
Заблуждение: непосредственный байт и есть значение, поэтому повторное чтение его через `cpu.bus` неверно трактовало бы его как адрес. Вне рамок: обработчики ORA, работающие с памятью (уроки 127-133), а также импорт и обработчики EOR/BIT в уроках 134-145.
Запустить этот урок
uv run pytest tests/chapter_01_cpu/test_126_ORA_immediate.py -v