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