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