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.pySí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