157. Cpx página cero

añade el opcode CPX de página cero ``0xE4``.

Lección 157 de 356 · tests/chapter_01_cpu/test_157_CPX_zero_page.py

Por qué existe este paso

CPX de página cero distingue una dirección de memoria compacta de un valor inmediato y pasa el byte obtenido a la primitiva de comparación existente.

En este paso, con `cpx y el modo inmediato ya presentes, añade lo siguiente a emulator/cpu/opcodes.py`:

def cpx_zero_page(cpu: CPU):
    addr = zero_page(cpu)
    value = cpu.bus.read(addr)
    cpx(cpu, value)

OPCODE_TABLE = {
    ...
    0xE4: cpx_zero_page,
}

`emulator/cpu/addressing_modes.py::zero_page obtiene la dirección de un byte; el handler debe leer esa dirección antes de llamar a instructions.cpx`. Solo cambian C/Z/N; X y la memoria permanecen invariantes, y el opcode más el operando avanzan PC dos bytes.

Concepto erróneo: a diferencia de CPX inmediato, el byte del operando designa una ubicación de memoria en lugar del valor comparado. Fuera de alcance: CPX absoluto (158) y todo el trabajo con CPY (159-162).

Ejecutar esta lección

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