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