126. ORA 立即数
将 ORA immediate 暴露为操作码 ``0x09``。
第 126 / 356 · tests/chapter_01_cpu/test_126_ORA_immediate.py
此步骤存在的原因
immediate 操作码以字面字节的形式将 ORA 暴露给 CPU 执行,并验证解码过程会将结果与标志位处理委托给共享基元。
在此步骤中,在第 125 课创建 `or_a 之后,请在 emulator/cpu/opcodes.py` 中进行以下添加:
from emulator.cpu.instructions import (..., and_a, or_a)
def ora_immediate(cpu: CPU):
or_a(cpu, immediate(cpu))
OPCODE_TABLE = {
...
0x09: ora_immediate,
}`emulator/cpu/addressing_modes.py::immediate 直接返回由 CPU.fetch_byte 获取的字节。instructions.or_a` 存储 A | value 的结果,并仅改变 Z/N;Carry/Overflow 及内存保持不变,操作码加操作数使 PC 前进两个字节。
常见误解:立即数字节本身就是值,若再通过 `cpu.bus` 读取一次,就会错误地将其当作地址处理。不在本步骤范围内:基于内存的 ORA 处理程序(第 127-133 课)以及第 134-145 课中的 EOR/BIT 导入与处理程序。
运行本课
uv run pytest tests/chapter_01_cpu/test_126_ORA_immediate.py -v