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