144. Bit zero page
добавить опкод BIT zero-page ``0x24``.
Урок 144 из 356 · tests/chapter_01_cpu/test_144_BIT_zero_page.py
Зачем нужен этот шаг
Первый опкод BIT должен извлечь операнд из памяти, а не изменять A, а затем делегировать свою особую логику Z/N/V примитиву инструкции.
На этом шаге урок 143 уже добавляет `bit. Поскольку это первый опкод BIT, добавьте его импорт и ровно следующий обработчик/запись в таблице в emulator/cpu/opcodes.py`:
from emulator.cpu.instructions import (..., bit)
def bit_zero_page(cpu: CPU):
addr = zero_page(cpu)
value = cpu.bus.read(addr)
bit(cpu, value)
OPCODE_TABLE = {
...
0x24: bit_zero_page,
}`addressing_modes.zero_page` использует операнд как адрес; чтение по шине предоставляет значение, биты которого проверяет BIT. Z/N/V могут измениться, тогда как A, Carry, X, Y и память неизменны; опкод и операнд продвигают PC на два байта.
Заблуждение: байт операнда не проверяется напрямую, и BIT не записывает значение по указанному адресу. Вне рамок урока: BIT absolute — урок 145.
Запустить этот урок
uv run pytest tests/chapter_01_cpu/test_144_BIT_zero_page.py -v