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