181. Инструкция jmp
добавить независимое от режима адресации поведение JMP.
Урок 181 из 356 · tests/chapter_01_cpu/test_181_instruction_jmp.py
На этом шаге добавьте `emulator/cpu/instructions.py::jmp`:
Инструкция
JMP -> PC = target_addressЦель
реализовать jmp(cpu, addr) в instructions.py.
Рекомендации
JMP напрямую изменяет программный счётчик. Она не читает память сама по себе и не изменяет флаги.
Важно
PC — 16-битный регистр, поэтому присваиваемый адрес должен оставаться в диапазоне 0x0000..0xFFFF:
cpu.pc = addr & 0xFFFFЗачем нужен этот шаг
Режимы адресации определяют адрес назначения; примитив инструкции лишь записывает этот адрес в PC. Инварианты: PC маскируется до 16 бит, а статус, регистры, стек и память остаются без изменений. Заблуждение: `addr` — это не адрес ячейки памяти, из которой нужно загрузить байт.
За рамками шага: импорт `jmp в emulator/cpu/opcodes.py`, подключение обработчиков absolute/indirect и записи в таблице — шаги 182–183. JSR начинается с шага 184.
Запустить этот урок
uv run pytest tests/chapter_01_cpu/test_181_instruction_jmp.py -v