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