138. Eor absolute
добавить опкод EOR absolute ``0x4D``.
Урок 138 из 356 · tests/chapter_01_cpu/test_138_EOR_absolute.py
Зачем нужен этот шаг
Абсолютная EOR позволяет выполнять исключающее ИЛИ с любой ячейкой памяти CPU, оставляя декодирование адреса в порядке little-endian вне примитива инструкции.
На этом шаге, после двух форм для нулевой страницы, добавьте ровно следующее в `emulator/cpu/opcodes.py`:
def eor_absolute(cpu: CPU):
addr = absolute(cpu)
value = cpu.bus.read(addr)
or_e(cpu, value)
OPCODE_TABLE = {
...
0x4D: eor_absolute,
}`emulator/cpu/addressing_modes.py::absolute использует CPU.fetch_word для декодирования сначала младшего, затем старшего байта. Обработчик читает по получившемуся адресу и делегирует вычисление XOR и флагов Z/N функции instructions.or_e`. Carry/Overflow, память, X и Y остаются неизменными; опкод вместе со словом сдвигает PC на три байта.
Заблуждение: слово в порядке little-endian — это адрес расположения значения, а не само значение. Вне рамок: индексированные/косвенные режимы EOR (139-142) и BIT (143-145).
Запустить этот урок
uv run pytest tests/chapter_01_cpu/test_138_EOR_absolute.py -v