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