106. Rol zero page x
подключить ROL Zero Page,X (опкод ``0x36``).
Урок 106 из 356 · tests/chapter_01_cpu/test_106_ROL_zero_page_x.py
На этом шаге расширьте урок 105, добавив только индексированный адаптер нулевой страницы и запись диспетчеризации.
Полный пример реализации в производственных местах
`emulator/cpu/opcodes.py::rol_zero_page_x`::
def rol_zero_page_x(cpu: CPU):
addr = zero_page_x(cpu)
rol(cpu, addr)`emulator/cpu/opcodes.py::OPCODE_TABLE`::
0x36: rol_zero_page_x,Зачем нужен этот шаг
Повторное использование установленного вспомогательного средства адресации предотвращает дублирование политики переполнения в примитиве инструкции.
Инварианты: потребляется один байт операнда; эффективный адрес равен `(operand + cpu.x) & 0xFF; PC заканчивается на start+2; rol изменяет только этот байт с поведением C/Z/N из урока 102. Таким образом база 0xFE плюс X 0x03 указывает на $0001`.
Заблуждение: индексация нулевой страницы не переходит в `$0101` и не является 16-битной абсолютной индексацией; обязательно переполнение до восьми бит.
Вне рамок: абсолютные режимы — уроки 107-108, ROR начинается с урока 109, а последовательность чтения/модификации/записи с точностью до такта для индексированных режимов — более поздняя работа.
Запустить этот урок
uv run pytest tests/chapter_01_cpu/test_106_ROL_zero_page_x.py -v