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