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