145. Bit absolute
añadir el opcode BIT absoluto ``0x2C``.
Lección 145 de 356 · tests/chapter_01_cpu/test_145_BIT_absolute.py
Por qué existe este paso
BIT absoluto extiende la prueba que solo afecta a flags a todo el espacio de direcciones y verifica que su operando de dos bytes se decodifica como una dirección de memoria little-endian.
En este paso, con la semántica de BIT y su importación de opcode ya establecidas en las lecciones 143-144, añade exactamente lo siguiente a `emulator/cpu/opcodes.py`:
def bit_absolute(cpu: CPU):
addr = absolute(cpu)
value = cpu.bus.read(addr)
bit(cpu, value)
OPCODE_TABLE = {
...
0x2C: bit_absolute,
}`emulator/cpu/addressing_modes.py::absolute usa CPU.fetch_word` para decodificar la dirección little-endian. El manejador realiza una única lectura del bus y BIT solo consume ese valor. Z/N/V pueden cambiar; A, Carry, X, Y y la memoria permanecen invariantes; el opcode más la palabra avanza el PC tres bytes.
Concepto erróneo: `2C 02 20 no comprueba el literal $2002`; lee esa dirección, y cualquier efecto secundario propio del bus sigue siendo comportamiento del bus. Fuera de alcance: CMP y sus opcodes de comparación comienzan en la lección 146.
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_145_BIT_absolute.py -v