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