117. And inmediato

exponer AND inmediato como opcode ``0x29``.

Lección 117 de 356 · tests/chapter_01_cpu/test_117_AND_immediate.py

En este paso, usa la instrucción de la lección 116 y añade su importación, el handler inmediato y la entrada en la tabla de opcodes en `emulator/cpu/opcodes.py`.

Por qué existe este paso

La forma inmediata hace ejecutable la primitiva AND recién introducida con un operando literal y establece su primera integración en la tabla de opcodes.

Implementación sugerida

from emulator.cpu.instructions import (..., and_a)

def and_immediate(cpu: CPU):
    and_a(cpu, immediate(cpu))

OPCODE_TABLE = {
    ...
    0x29: and_immediate,
}

`emulator/cpu/addressing_modes.py::immediate llama a CPU.fetch_byte y devuelve ese byte como valor. and_a` almacena A & value y cambia solo Z/N, así que Carry y Overflow permanecen invariantes; el opcode y el operando avanzan PC en dos bytes y la memoria no se modifica.

Concepto erróneo: el modo inmediato no devuelve una dirección, por lo que un `cpu.bus.read` adicional interpretaría el literal como un puntero. Fuera del alcance: los handlers de AND desde página cero hasta indirecto,Y (lecciones 118-124), y el trabajo de ORA/EOR/ BIT en las lecciones 125-145.

Ejecutar esta lección

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