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