147. Cmp immediate

añadir el opcode CMP inmediato ``0xC9``.

Lección 147 de 356 · tests/chapter_01_cpu/test_147_CMP_immediate.py

Por qué existe este paso

La forma inmediata expone CMP por primera vez a través de la ejecución de la CPU, comparando A con un byte literal mientras deja toda la lógica de flags de comparación en la primitiva compartida.

En este paso, la lección 146 ya añade `cmp. Como primera lección de opcode de CMP, añade su importación y exactamente el siguiente manejador/entrada de tabla en emulator/cpu/opcodes.py`:

from emulator.cpu.instructions import (..., cmp)

def cmp_immediate(cpu: CPU):
    cmp(cpu, immediate(cpu))

OPCODE_TABLE = {
    ...
    0xC9: cmp_immediate,
}

`addressing_modes.immediate` devuelve directamente el valor del operando obtenido, por lo que no hay lectura de memoria de datos. C/Z/N pueden cambiar; A, Overflow, X, Y y la memoria son invariantes; el opcode más el operando avanza el PC dos bytes.

Concepto erróneo: el CMP inmediato no trata su operando como una dirección ni almacena la resta. Fuera de alcance: los modos de memoria de CMP son las lecciones 148-154; CPX y CPY quedan para lecciones posteriores.

Ejecutar esta lección

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