047. Sty zero page
Добавьте STY zero page ($84).
Урок 47 из 356 · tests/chapter_01_cpu/test_047_STY_zero_page.py
Файл для обновления
emulator/cpu/opcodes.pyРасположения
opcodes imports of zero_page and sty
opcodes.sty_zero_page
opcodes.OPCODE_TABLE[$84]Зачем нужен этот шаг
Базовая инструкция sty уже выполняет запись. Этот урок подключает её первую кодировку, вычисляя однобайтовый адрес назначения на нулевой странице и передавая этот адрес в sty.
Полный пример реализации
# emulator/cpu/opcodes.py
from emulator.cpu.addressing_modes import zero_page
from emulator.cpu.instructions import sty
def sty_zero_page(cpu: CPU):
addr = zero_page(cpu)
sty(cpu, addr)
OPCODE_TABLE = {
# Preserve existing entries.
0x84: sty_zero_page,
}Важные инварианты
- $84 сопоставляется с sty_zero_page и потребляет один байт операнда
- операнд преобразуется в $00nn и передаётся как адрес
styзаписывает Y через шину- STY оставляет Zero и Negative неизменными
Распространённое заблуждение
Не читайте по вычисленному адресу перед вызовом sty; инструкции записи передают базовой инструкции адрес назначения, а не значение.
Вне рамок задания
- кодировки STY zero-page,X и absolute
- новые режимы адресации
- тайминг циклов
Запустить этот урок
uv run pytest tests/chapter_01_cpu/test_047_STY_zero_page.py -v