162. Cpy absoluto

añadir el opcode CPY absoluto ``0xCC``.

Lección 162 de 356 · tests/chapter_01_cpu/test_162_CPY_absolute.py

Por qué existe este paso

CPY absoluto compara Y con un byte en cualquier lugar de la memoria de la CPU y verifica que el operando de dos bytes se decodifica como una dirección little-endian.

En este paso, después de que las lecciones 159-161 proporcionen `cpy y sus manejadores inmediato y de página cero, añade exactamente lo siguiente a emulator/cpu/opcodes.py`:

def cpy_absolute(cpu: CPU):
    addr = absolute(cpu)
    value = cpu.bus.read(addr)
    cpy(cpu, value)

OPCODE_TABLE = {
    ...
    0xCC: cpy_absolute,
}

`emulator/cpu/addressing_modes.py::absolute consume una dirección little-endian mediante CPU.fetch_word; CC 00 02 por tanto compara Y con el byte leído de $0200 a través de instructions.cpy`.

Invariantes: Y y la memoria no cambian; solo cambian C/Z/N, y el opcode más el operando de dos bytes avanza PC en tres bytes. Concepto erróneo: `00 02 no es el valor literal 0x0002` a comparar y no es una dirección big-endian.

Fuera de alcance: el direccionamiento relativo y los saltos condicionales comienzan en la lección 163.

Ejecutar esta lección

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