139. Eor absolute x

добавить опкод EOR absolute,X ``0x5D``.

Урок 139 из 356 · tests/chapter_01_cpu/test_139_EOR_absolute_x.py

Зачем нужен этот шаг

Программам нужна EOR над данными по полному адресу с индексацией по X; этот шаг связывает данную форму эффективного адреса с уже протестированной семантикой исключающего ИЛИ.

На этом шаге урок 138 предоставляет неиндексированную абсолютную EOR. Добавьте ровно следующее в `emulator/cpu/opcodes.py`:

def eor_absolute_x(cpu: CPU):
    addr = absolute_x(cpu)
    value = cpu.bus.read(addr)
    or_e(cpu, value)

OPCODE_TABLE = {
    ...
    0x5D: eor_absolute_x,
}

`emulator/cpu/addressing_modes.py::absolute_x считывает базовое слово в порядке little-endian, а затем прибавляет X; этот вспомогательный метод не применяет дополнительную маску & 0xFFFF. Обработчик читает по индексированному адресу и вызывает instructions.or_e`. A и Z/N могут измениться; Carry/Overflow, память, X и Y остаются неизменными; PC сдвигается на три байта.

Заблуждение: X индексирует декодированный 16-битный адрес, а не его младший байт операнда. Вне рамок: absolute,Y и косвенная EOR (140-142) и BIT (143-145).

Запустить этот урок

uv run pytest tests/chapter_01_cpu/test_139_EOR_absolute_x.py -v