156. Cpx immediate
добавить непосредственный режим CPX как опкод ``0xE0``.
Урок 156 из 356 · tests/chapter_01_cpu/test_156_CPX_immediate.py
Зачем нужен этот шаг
Непосредственный режим CPX впервые раскрывает сравнение в исполнении CPU с буквальным значением и без обращения к памяти данных.
На этом шаге, после того как урок 155 создаёт инструкцию, внесите следующие добавления в `emulator/cpu/opcodes.py`:
from emulator.cpu.instructions import (..., cpx)
def cpx_immediate(cpu: CPU):
cpx(cpu, immediate(cpu))
OPCODE_TABLE = {
...
0xE0: cpx_immediate,
}`emulator/cpu/addressing_modes.py::immediate возвращает результат CPU.fetch_byte()` напрямую как сравниваемое значение. CPX меняет только C/Z/N; X, память и Overflow остаются неизменными, а опкод вместе с операндом сдвигают PC на два байта.
Заблуждение: непосредственный байт — это значение, а не адрес, требующий чтения с шины. Вне рамок: CPX для нулевой страницы и абсолютного режима (157-158), а также все символы и опкоды CPY (159-162).
Запустить этот урок
uv run pytest tests/chapter_01_cpu/test_156_CPX_immediate.py -v