160. Cpy immediate
добавить непосредственный режим CPY как опкод ``0xC0``.
Урок 160 из 356 · tests/chapter_01_cpu/test_160_CPY_immediate.py
Зачем нужен этот шаг
Непосредственный режим CPY раскрывает сравнение Y через исполнение CPU с использованием буквального байта без дополнительного чтения памяти данных.
На этом шаге, после того как урок 159 создаёт инструкцию, внесите следующие добавления в `emulator/cpu/opcodes.py`:
from emulator.cpu.instructions import (..., cpy)
def cpy_immediate(cpu: CPU):
cpy(cpu, immediate(cpu))
OPCODE_TABLE = {
...
0xC0: cpy_immediate,
}`emulator/cpu/addressing_modes.py::immediate возвращает результат CPU.fetch_byte()` как значение. CPY меняет только C/Z/N; Y, память и Overflow остаются неизменными, а опкод вместе с операндом сдвигают PC на два байта.
Заблуждение: непосредственный режим не указывает на адрес на шине, и CPY не сохраняет результат вычитания в Y. Вне рамок: CPY для нулевой страницы и абсолютного режима (уроки 161-162).
Запустить этот урок
uv run pytest tests/chapter_01_cpu/test_160_CPY_immediate.py -v