115. ROR для абсолютной адресации с индексом X

завершить ROR кодом операции ``0x7E`` для absolute,X.

Урок 115 из 356 · tests/chapter_01_cpu/test_115_ROR_absolute_x.py

На этом шаге, после урока 114, добавьте только обработчик Absolute,X и запись в таблице в `emulator/cpu/opcodes.py`.

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

Это завершает покрытие режимов адресации ROR, разрешая полный базовый адрес в формате little-endian плюс X перед циклическим сдвигом выбранного байта памяти.

Предлагаемая реализация

def ror_absolute_x(cpu: CPU):
    addr = absolute_x(cpu)
    ror(cpu, addr)

OPCODE_TABLE = {
    ...
    0x7E: ror_absolute_x,
}

`emulator/cpu/addressing_modes.py::absolute_x выполняет выборку 16-битной базы в формате little-endian и затем добавляет cpu.x. 7E 00 02 с X 0x04 поэтому выполняет чтение/модификацию/запись $0204 посредством instructions.ror. A остается неизменным, C/Z/N сохраняют семантику ROR, и PC увеличивается на три байта. В отличие от zero-page,X, absolute,X не заворачивает на $00FF`.

Заблуждение: X индексирует декодированный адрес, а не какой-либо из байтов операнда и не загруженное значение. Вне области задачи: тайминг тактов/перехода через страницу и вся работа над AND, которая начинается с урока 116; после этого урока дополнительные режимы ROR не добавлялись.

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

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