145. Bit absolute
добавить опкод BIT absolute ``0x2C``.
Урок 145 из 356 · tests/chapter_01_cpu/test_145_BIT_absolute.py
Зачем нужен этот шаг
Абсолютный режим BIT расширяет проверку только флагов на всё адресное пространство и проверяет, что двухбайтовый операнд декодируется как little-endian адрес памяти.
На этом шаге, с семантикой BIT и его импортом опкода, установленными в уроках 143–144, добавьте в `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 использует CPU.fetch_word` для декодирования little-endian адреса. Обработчик выполняет одно чтение по шине, и BIT только потребляет это значение. Z/N/V могут измениться; A, Carry, X, Y и память остаются неизменными; опкод и слово продвигают PC на три байта.
Заблуждение: `2C 02 20 не проверяет литерал $2002`; он читает по этому адресу, а любые побочные эффекты на стороне шины остаются поведением шины. Вне рамок урока: CMP и его опкоды сравнения начинаются в уроке 146.
Запустить этот урок
uv run pytest tests/chapter_01_cpu/test_145_BIT_absolute.py -v