058. Adc absolute x

Conectar ADC absolute,X (opcode $7D) al despacho de la CPU.

Lección 58 de 356 · tests/chapter_01_cpu/test_058_ADC_absolute_x.py

Archivo a actualizar

emulator/cpu/opcodes.py

Símbolos a crear/actualizar

opcodes.adc_absolute_x
OPCODE_TABLE[$7D]

Por qué existe este paso

El ayudante absolute_x existente consume la dirección base en little-endian y le suma X. Este manejador lee el byte en esa dirección efectiva y reutiliza la instrucción ADC implementada en el test 053.

Implementación de ejemplo completa

# 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,
}

Invariantes importantes

  • X se aplica exactamente una vez, en absolute_x
  • la dirección efectiva no está restringida a la página cero
  • PC avanza tres bytes en total
  • el valor direccionado se pasa a adc

Concepto erróneo habitual

No apliques el ajuste circular de página cero a una dirección absoluta indexada; este modo puede cruzar a la página siguiente.

Fuera de alcance

  • los modos absolute,Y e indirecto de ADC
  • las penalizaciones de tiempo por cruce de página
  • la política de ajuste circular de direcciones de 16 bits más allá del ayudante existente

Ejecutar esta lección

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