036. Инструкция stx

Добавление базовой инструкции STX.

Урок 36 из 356 · tests/chapter_01_cpu/test_036_instruction_stx.py

Файл для изменения

emulator/cpu/instructions.py

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

instructions.stx, beside ldx

Почему этот шаг существует

STX вводит парную инструкцию сохранения для LDX. Она следует границе, установленной STA: базовая инструкция получает уже вычисленный адрес назначения и записывает регистр через шину CPU, не изменяя флаги.

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

# emulator/cpu/instructions.py
def stx(cpu: CPU, address: int):
    value = cpu.x
    cpu.bus.write(address, value)

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

  • stx получает адрес, а не значение
  • записываемое значение — это X, а запись идёт через cpu.bus.write
  • X и флаги процессора остаются без изменений

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

Не обновляйте Zero или Negative на основе X. Инструкции сохранения только записывают в память, даже если сохраняемый байт равен $00 или имеет установленный бит 7.

Вне рамок

  • все обработчики опкодов STX и записи в таблице опкодов
  • изменения во вспомогательных функциях режимов адресации
  • тайминг циклов и аппаратные эффекты со стороны записи

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

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