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