077. Dec zero page x
подключить DEC Zero Page,X (`0xD6`).
Урок 77 из 356 · tests/chapter_01_cpu/test_077_DEC_zero_page_x.py
На этом шаге, при импортированном dec из урока 076, добавьте только emulator/cpu/opcodes.py:dec_zero_page_x и OPCODE_TABLE[0xD6].
Зачем нужен этот шаг
Делегировать вычисление индексированного адреса нулевой страницы существующей вспомогательной функции адресации, а изменение памяти — существующему примитиву DEC.
Рекомендуемая реализация в emulator/cpu/opcodes.py:
def dec_zero_page_x(cpu: CPU):
addr = zero_page_x(cpu)
dec(cpu, addr)Добавьте следующую запись в существующую OPCODE_TABLE:
0xD6: dec_zero_page_x,Инварианты: потребляется один байт операнда; сумма базы и X переносится через $FF в пределах нулевой страницы; PC продвигается к следующей двухбайтовой инструкции; DEC записывает 8-битный результат и обновляет только Z/N.
Типичная ошибка: $FF,X при X=1 не указывает на $0100; индексированная адресация нулевой страницы разрешается в $0000 до выполнения DEC.
Вне области действия: dec_absolute/0xCE и dec_absolute_x/0xDE — это уроки 078–079.
Запустить этот урок
uv run pytest tests/chapter_01_cpu/test_077_DEC_zero_page_x.py -v