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