158. Cpx absoluto

añade el opcode CPX absoluto ``0xEC``.

Lección 158 de 356 · tests/chapter_01_cpu/test_158_CPX_absolute.py

Por qué existe este paso

CPX absoluto extiende la comparación a un byte en cualquier parte de la memoria de la CPU manteniendo la decodificación little-endian de direcciones fuera de la primitiva de CPX.

En este paso, completa CPX añadiendo exactamente lo siguiente a `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 obtiene una palabra little-endian mediante CPU.fetch_word; EC 00 02 compara por tanto X con el valor en $0200`. Solo cambian C/Z/N; X, la memoria y Overflow son invariantes, y el opcode más la palabra avanzan PC tres bytes.

Concepto erróneo: la palabra del operando es una dirección, no un valor comparado de 16 bits. Fuera de alcance: la instrucción CPY y sus tres opcodes (lecciones 159-162).

Ejecutar esta lección

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