120. AND для абсолютной адресации

добавить код операции AND для абсолютной адресации ``0x2D``.

Урок 120 из 356 · tests/chapter_01_cpu/test_120_AND_absolute.py

На этом шаге используйте `and_a`, ее импорт для кодов операций и более простые режимы из уроков 116-119, затем добавьте только обработчик абсолютного режима и запись в таблице.

Зачем нужен этот шаг

Абсолютный режим позволяет AND читать из всего адресного пространства CPU и проверяет разделение между декодированием адреса в формате little-endian и логической операцией.

Предлагаемая реализация в `emulator/cpu/opcodes.py`:

def and_absolute(cpu: CPU):
    addr = absolute(cpu)
    value = cpu.bus.read(addr)
    and_a(cpu, value)

OPCODE_TABLE = {
    ...
    0x2D: and_absolute,
}

`emulator/cpu/addressing_modes.py::absolute получает слово в формате little-endian через CPU.fetch_word. Поэтому 2D 00 02 читает значение по адресу $0200 и передает его в instructions.and_a`. A и Z/N изменяются; Carry/Overflow и память остаются инвариантными; код операции плюс слово увеличивают PC на три байта.

Заблуждение: слово-операнд — это адрес, а не значение, и его байты следуют не в порядке big-endian. Последующая работа вне области задачи: AND absolute,X, absolute,Y, (indirect,X) и (indirect),Y относятся к урокам 121-124; ORA/EOR/BIT — к урокам 125-145.

Запустить этот урок

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