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