057. Adc absolute
Conectar ADC absolute (opcode $6D) al despacho de la CPU.
Lección 57 de 356 · tests/chapter_01_cpu/test_057_ADC_absolute.py
Archivo a actualizar
emulator/cpu/opcodes.pySímbolos a crear/actualizar
opcodes.adc_absolute
OPCODE_TABLE[$6D]Por qué existe este paso
El modo absolute amplía ADC a una dirección de operando de 16 bits en little-endian. El ayudante absolute existente consume esa palabra; el manejador de opcode lee el byte de la dirección y delega la aritmética en adc.
Implementación de ejemplo completa
# emulator/cpu/opcodes.py
def adc_absolute(cpu):
addr = absolute(cpu)
value = cpu.bus.read(addr)
adc(cpu, value)
OPCODE_TABLE = {
# ...existing entries...
0x6D: adc_absolute,
}Invariantes importantes
absolutecombina el byte bajo del operando antes que el byte alto- el manejador lee de la dirección de 16 bits resultante
- PC avanza tres bytes en total
adcsigue siendo el único responsable de la aritmética y del comportamiento de las banderas
Concepto erróneo habitual
No pases la dirección de 16 bits obtenida a adc; primero lee el byte almacenado en esa dirección.
Fuera de alcance
- los modos absolute,X y absolute,Y de ADC
- el ajuste de tiempo por cruce de página
- cambios en
absoluteo enadc
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_057_ADC_absolute.py -v