122. And absolute y

añadir el opcode AND absolute,Y ``0x39``.

Lección 122 de 356 · tests/chapter_01_cpu/test_122_AND_absolute_y.py

Por qué existe este paso

Esto aporta la contraparte indexada por Y de absolute,X para que AND pueda usar cualquiera de los dos registros de índice sin duplicar su semántica de acumulador y flags.

En este paso, tras absolute,X en la lección 121, añade solo este manejador y su registro en `emulator/cpu/opcodes.py`:

def and_absolute_y(cpu: CPU):
    addr = absolute_y(cpu)
    value = cpu.bus.read(addr)
    and_a(cpu, value)

OPCODE_TABLE = {
    ...
    0x39: and_absolute_y,
}

`emulator/cpu/addressing_modes.py::absolute_y obtiene la palabra base en little-endian antes de sumar cpu.y. El valor de memoria resuelto alimenta a la ya existente instructions.and_a`; A y Z/N cambian, mientras que Y, Carry/Overflow y la memoria permanecen invariantes. El opcode y la palabra consumen tres bytes.

Concepto erróneo: absolute,Y no es zero-page,Y y no restringe la indexación a la página cero. Fuera de alcance: AND (indirect,X)/(indirect),Y (lecciones 123-124) y las adiciones de ORA/EOR/BIT en las lecciones 125-145.

Ejecutar esta lección

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