158. Cpx absolute

добавить опкод CPX absolute ``0xEC``.

Урок 158 из 356 · tests/chapter_01_cpu/test_158_CPX_absolute.py

Зачем нужен этот шаг

Абсолютный режим CPX расширяет сравнение на байт в любом месте памяти CPU, оставляя декодирование адреса в порядке little-endian вне примитива CPX.

На этом шаге завершите CPX, добавив точно следующее в `emulator/cpu/opcodes.py`:

def cpx_absolute(cpu: CPU):
    addr = absolute(cpu)
    value = cpu.bus.read(addr)
    cpx(cpu, value)

OPCODE_TABLE = {
    ...
    0xEC: cpx_absolute,
}

`emulator/cpu/addressing_modes.py::absolute получает слово в порядке little-endian через CPU.fetch_word; таким образом EC 00 02 сравнивает X со значением по адресу $0200`. Меняются только C/Z/N; X, память и Overflow не изменяются, а опкод вместе со словом сдвигают PC на три байта.

Заблуждение: слово-операнд — это адрес, а не 16-битное сравниваемое значение. Вне рамок: инструкция CPY и её три опкода (уроки 159-162).

Запустить этот урок

uv run pytest tests/chapter_01_cpu/test_158_CPX_absolute.py -v