041. Инструкция sty
Добавьте базовую инструкцию STY.
Урок 41 из 356 · tests/chapter_01_cpu/test_041_instruction_sty.py
Файл для обновления
emulator/cpu/instructions.pyРасположение
instructions.sty, beside ldyЗачем нужен этот шаг
STY завершает пару инструкций для регистра Y. Как и STA и STX, она получает уже вычисленный адрес назначения и записывает регистр через шину CPU.
Полный пример реализации
# emulator/cpu/instructions.py
def sty(cpu: CPU, address: int):
value = cpu.y
cpu.bus.write(address, value)Важные инварианты
- sty получает адрес, а не значение
- записываемое значение — это Y, и запись выполняется через cpu.bus.write
- Y и флаги процессора остаются неизменными
Распространённое заблуждение
Не вызывайте cpu._update_zero_and_negative_flags; инструкции записи не вычисляют флаги на основе записываемого байта, даже если Y равен $00 или у него установлен бит 7.
Вне рамок задания
- все обработчики опкодов STY и записи в таблицу опкодов
- добавление или изменение вспомогательных функций режимов адресации
- тайминг циклов и побочные аппаратные эффекты записи
Запустить этот урок
uv run pytest tests/chapter_01_cpu/test_041_instruction_sty.py -v