079. Dec absolute x

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

Урок 79 из 356 · tests/chapter_01_cpu/test_079_DEC_absolute_x.py

На этом шаге добавьте emulator/cpu/opcodes.py:dec_absolute_x и OPCODE_TABLE[0xDE] после работы над DEC из уроков 076–078.

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

Скомпоновать существующий резолвер адреса absolute-X с примитивом DEC вместо дублирования индексации, обращения к шине или логики флагов.

Рекомендуемая реализация в emulator/cpu/opcodes.py:

def dec_absolute_x(cpu: CPU):
    addr = absolute_x(cpu)
    dec(cpu, addr)

Добавьте следующую запись в существующую OPCODE_TABLE:

0xDE: dec_absolute_x,

Инварианты: двухбайтовый базовый адрес имеет порядок little-endian; X участвует только в вычислении эффективного адреса и не изменяется; переход через границу страницы допустим; PC продвигается на два байта операнда; DEC сохраняет 8-битный результат и изменяет только Z/N.

Типичная ошибка: эта инструкция декрементирует память по адресу base + X, а не регистр X. Декремент регистра — это последующая инструкция DEX.

Вне области действия: примитивы INX/DEX и их подразумеваемые опкоды — это уроки 080–083; учёт тактов не входит в этот шаг.

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

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