058. Adc 绝对,X
将 ADC 绝对,X 寻址(操作码 $7D)接入 CPU 分发。
第 58 / 356 · tests/chapter_01_cpu/test_058_ADC_absolute_x.py
要更新的文件
emulator/cpu/opcodes.py要创建/更新的符号
opcodes.adc_absolute_x
OPCODE_TABLE[$7D]为什么需要这一步
现有的 absolute_x 辅助函数消耗小端的基地址并加上 X。该处理函数读取这个有效地址处的字节,并复用测试 053 中实现的 ADC 指令。
完整示例实现
# emulator/cpu/opcodes.py
def adc_absolute_x(cpu):
addr = absolute_x(cpu)
value = cpu.bus.read(addr)
adc(cpu, value)
OPCODE_TABLE = {
# ...existing entries...
0x7D: adc_absolute_x,
}重要不变量
- X 恰好由
absolute_x应用一次 - 有效地址不局限于零页
- PC 总共前进三个字节
- 被寻址的值会传给
adc
常见误区
不要对绝对变址地址应用零页环绕;该模式可能跨入下一页。
范围之外
- 绝对,Y 与间接的 ADC 寻址模式
- 跨页时序惩罚
- 现有辅助函数之外的 16 位地址环绕策略
运行本课
uv run pytest tests/chapter_01_cpu/test_058_ADC_absolute_x.py -v