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