101. Lsr absolute x

подключить LSR Absolute,X (опкод ``0x5E``).

Урок 101 из 356 · tests/chapter_01_cpu/test_101_LSR_absolute_x.py

На этом шаге добавьте только финальный адаптер режима адресации LSR и запись в таблицу диспетчеризации ниже. Примитив инструкции и остальные режимы LSR из уроков 095-100 являются предпосылками.

Предлагаемая реализация в производственных местах

`emulator/cpu/opcodes.py::lsr_absolute_x`::

def lsr_absolute_x(cpu: CPU):
    addr = absolute_x(cpu)
    lsr(cpu, addr)

`emulator/cpu/opcodes.py::OPCODE_TABLE`::

0x5E: lsr_absolute_x,

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

Обработчики опкодов преобразуют закодированные операнды в эффективные адреса; `instructions.lsr` остаётся независимой от режима адресации.

Инварианты: `absolute_x(cpu) потребляет двухбайтовый операнд в порядке little-endian, прибавляет cpu.x и оставляет PC на три байта дальше опкода; lsr выполняет чтение/модификацию/запись и обновление флагов по этому адресу. Таким образом 5E 00 02 с X=0x04 указывает на $0204`.

Заблуждение: операнд не является ни значением для сдвига, ни 8-битным адресом нулевой страницы; не прибавляйте X только к одному байту операнда и не вызывайте `lsr_a`.

Вне рамок: поведение и опкоды ROL/ROR начинаются с урока 102 и далее; точность в тактах и таймингах пересечения страниц не входят в этот шаг.

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

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