120. And absoluto

añadir el opcode AND absoluto ``0x2D``.

Lección 120 de 356 · tests/chapter_01_cpu/test_120_AND_absolute.py

En este paso, usa `and_a`, su importación de opcode y los modos más simples de las lecciones 116-119, y luego añade solo el handler absoluto y la entrada en la tabla.

Por qué existe este paso

El modo absoluto permite a AND leer desde el espacio de direcciones completo de la CPU y verifica la separación entre la decodificación de direcciones little-endian y la operación lógica.

Implementación sugerida en `emulator/cpu/opcodes.py`:

def and_absolute(cpu: CPU):
    addr = absolute(cpu)
    value = cpu.bus.read(addr)
    and_a(cpu, value)

OPCODE_TABLE = {
    ...
    0x2D: and_absolute,
}

`emulator/cpu/addressing_modes.py::absolute obtiene una palabra little-endian mediante CPU.fetch_word. Por tanto, 2D 00 02 lee el valor en $0200 y se lo pasa a instructions.and_a`. A y Z/N cambian; Carry/Overflow y la memoria son invariantes; el opcode más la palabra avanzan PC tres bytes.

Concepto erróneo: la palabra del operando es una dirección, no el valor, y sus bytes no están en big-endian. Fuera del alcance, trabajo posterior: AND absoluto,X, absoluto,Y, (indirecto,X) e (indirecto),Y son las lecciones 121-124; ORA/EOR/BIT son las lecciones 125-145.

Ejecutar esta lección

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