040. Инструкция ldy

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

Урок 40 из 356 · tests/chapter_01_cpu/test_040_instruction_ldy.py

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

emulator/cpu/instructions.py

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

instructions.ldy, beside stx

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

LDY открывает семейство загрузки регистра Y, устанавливая её поведение на уровне значений ещё до подключения какого-либо опкода LDY. Она повторяет LDA и LDX: присваивает уже вычисленное значение регистру назначения, затем обновляет Zero и Negative.

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

# emulator/cpu/instructions.py
def ldy(cpu: CPU, value):
    cpu.y = value
    cpu._update_zero_and_negative_flags(cpu.y)

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

  • ldy получает значение, а не адрес
  • Y получает значение, в то время как A и X остаются без изменений
  • Zero устанавливается точно для $00 и сбрасывается в остальных случаях
  • Negative повторяет бит 7 и сбрасывается, когда бит 7 равен нулю

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

Не извлекайте операнд и не читайте память внутри ldy; будущие обработчики опкодов будут вычислять значение перед вызовом этой инструкции.

Вне рамок

  • все обработчики опкодов LDY и записи в таблице опкодов
  • инструкция STY и её кодировки
  • тайминг циклов

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

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