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