144. Bit 零页寻址

添加 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