152. Cmp absoluto y

añade el opcode CMP absolute,Y ``0xD9``.

Lección 152 de 356 · tests/chapter_01_cpu/test_152_CMP_absolute_y.py

Por qué existe este paso

Absolute,Y proporciona la comparación indexada correspondiente a través de Y mientras reutiliza el comportamiento compartido de CMP.

En este paso, la lección 151 ya ha añadido absolute,X. Añade exactamente lo siguiente a `emulator/cpu/opcodes.py`:

def cmp_absolute_y(cpu: CPU):
    addr = absolute_y(cpu)
    value = cpu.bus.read(addr)
    cmp(cpu, value)

OPCODE_TABLE = {
    ...
    0xD9: cmp_absolute_y,
}

`emulator/cpu/addressing_modes.py::absolute_y obtiene la palabra base little-endian y suma Y antes de la lectura del bus. instructions.cmp` cambia solo C/Z/N; A, Y, la memoria y Overflow permanecen invariantes, mientras que el opcode más la palabra avanzan PC tres bytes.

Concepto erróneo: Y modifica la dirección efectiva, no el valor obtenido, y los bytes base no están en big-endian. Fuera de alcance: CMP indirect,X e indirect,Y (153-154), y luego CPX/CPY (155-162).

Ejecutar esta lección

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