078. Dec absolute

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

Урок 78 из 356 · tests/chapter_01_cpu/test_078_DEC_absolute.py

На этом шаге, после примитива DEC и форм zero page из уроков 076–077, добавьте emulator/cpu/opcodes.py:dec_absolute и OPCODE_TABLE[0xCE].

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

Позволить addressing_modes.absolute декодировать эффективный адрес в порядке little-endian, а затем повторно использовать instructions.dec для изменения значения и установки флагов.

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

def dec_absolute(cpu: CPU):
    addr = absolute(cpu)
    dec(cpu, addr)

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

0xCE: dec_absolute,

Инварианты: два байта операнда потребляются в порядке «младший байт первым»; CE 00 02 разрешается в $0200; PC продвигается к следующей трёхбайтовой инструкции; DEC приводит байт в памяти к восьми битам и обновляет только Zero и Negative.

Типичная ошибка: $00 $02 — это не адрес $0002; абсолютные операнды 6502 имеют порядок little-endian и, следовательно, обозначают $0200.

Вне области действия: DEC absolute X (dec_absolute_x, опкод 0xDE) относится к уроку 079.

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

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