038. Stx нулевая страница y
Добавление STX нулевая страница,Y ($96).
Урок 38 из 356 · tests/chapter_01_cpu/test_038_STX_zero_page_y.py
Файл для изменения
emulator/cpu/opcodes.pyРасположения
opcodes.stx_zero_page_y
opcodes.OPCODE_TABLE[$96]Почему этот шаг существует
Этот урок повторно использует вспомогательную функцию адресации нулевой страницы,Y, впервые введённую в тесте 029, чтобы добавить индексированную кодировку нулевой страницы для STX. Вычисление адреса остаётся отдельным от базовой операции сохранения.
Полная примерная реализация
# emulator/cpu/opcodes.py
def stx_zero_page_y(cpu: CPU):
addr = zero_page_y(cpu)
stx(cpu, addr)
OPCODE_TABLE = {
# Preserve existing entries.
0x96: stx_zero_page_y,
}Важные инварианты
- $96 отображается на stx_zero_page_y
- однобайтовый операнд индексируется с помощью Y, а не X
- база плюс Y оборачивается в пределах страницы $00
- stx записывает X и оставляет Zero и Negative без изменений
Распространённое заблуждение
Сохраняемый регистр не определяет индексный регистр. STX $nn,Y сохраняет X, но использует Y для вычисления адреса назначения.
Вне рамок
- STX абсолютный
- изменения в zero_page_y или stx
- тайминг циклов
Запустить этот урок
uv run pytest tests/chapter_01_cpu/test_038_STX_zero_page_y.py -v