160. CPY 立即数寻址
将 CPY 立即数寻址暴露为操作码 ``0xC0``。
第 160 / 356 · tests/chapter_01_cpu/test_160_CPY_immediate.py
此步骤存在的原因
立即数寻址的 CPY 使用字面字节通过 CPU 执行暴露 Y 的比较操作,不需要额外的数据内存读取。
在此步骤中,在课程 159 创建该指令之后,在 `emulator/cpu/opcodes.py` 中做以下添加:
from emulator.cpu.instructions import (..., cpy)
def cpy_immediate(cpu: CPU):
cpy(cpu, immediate(cpu))
OPCODE_TABLE = {
...
0xC0: cpy_immediate,
}`emulator/cpu/addressing_modes.py::immediate 返回 CPU.fetch_byte()` 作为该值。CPY 只改变 C/Z/N;Y、内存和溢出标志保持不变,操作码加操作数使 PC 前进两个字节。
常见误解:立即数寻址方式并不指代总线地址,CPY 也不会把减法结果存入 Y。超出范围:CPY 零页和绝对寻址(课程 161-162)。
运行本课
uv run pytest tests/chapter_01_cpu/test_160_CPY_immediate.py -v