026. Sta absolute y

Добавление STA с адресацией absolute,Y ($99).

Урок 26 из 356 · tests/chapter_01_cpu/test_026_STA_absolute_y.py

Файл для обновления

emulator/cpu/opcodes.py

Расположения

opcodes.sta_absolute_y
opcodes.OPCODE_TABLE[$99]

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

Это аналог Теста 025 с индексацией по Y. Здесь повторно используется absolute_y, поэтому обработчик лишь координирует разрешение адреса назначения и существующую запись sta.

Полная реализация примера

# emulator/cpu/opcodes.py
def sta_absolute_y(cpu) -> None:
    address = absolute_y(cpu)
    sta(cpu, address)


OPCODE_TABLE = {
    # Preserve existing entries.
    0x99: sta_absolute_y,
}

Важные инварианты

  • два байта операнда формируют базу до прибавления Y
  • итоговое назначение выбирает Y, а не X
  • полный индексированный адрес передаётся в sta
  • STA не обновляет флаги

Распространённое заблуждение

Копирование обработчика absolute,X без изменения вспомогательной функции адресации незаметно использует не тот индексный регистр, когда X и Y различаются.

Вне рамок

  • опкоды STA с косвенной адресацией
  • поведение циклов при пересечении страницы
  • изменения в absolute_y или sta

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

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