142. Eor indirect y
добавить опкод EOR (indirect),Y ``0x51``.
Урок 142 из 356 · tests/chapter_01_cpu/test_142_EOR_indirect_y.py
Зачем нужен этот шаг
Этот шаг завершает покрытие режимов адресации EOR постиндексированным указательным доступом, используя помощник indirect,Y перед передачей считанного значения примитиву EOR.
На этом шаге урок 141 завершает другую косвенную форму EOR. Добавьте в `emulator/cpu/opcodes.py` ровно следующее:
def eor_indirect_y(cpu: CPU):
addr = indirect_y(cpu)
value = cpu.bus.read(addr)
or_e(cpu, value)
OPCODE_TABLE = {
...
0x51: eor_indirect_y,
}`emulator/cpu/addressing_modes.py::indirect_y сначала считывает обёрнутый little-endian указатель из нулевой страницы, а затем прибавляет Y к полученному целевому адресу. Обработчик читает значение по результирующему адресу и передаёт его в or_e`. A и флаги Z/N могут измениться; Carry, Overflow, X, Y и память остаются неизменными; PC продвигается на два байта.
Заблуждение: Y не выбирает байты указателя в нулевой странице; он индексирует декодированный целевой адрес. Вне рамок урока: поведение и опкоды BIT — уроки 143–145.
Запустить этот урок
uv run pytest tests/chapter_01_cpu/test_142_EOR_indirect_y.py -v