066. Sbc absolute
Añadir SBC Absolute.
Lección 66 de 356 · tests/chapter_01_cpu/test_066_SBC_absolute.py
Archivo a actualizar
emulator/cpu/opcodes.pySímbolos a añadir/actualizar
opcodes.sbc_absolute and OPCODE_TABLE[0xED]Por qué existe este paso
Esta lección conecta SBC con una dirección absoluta de 16 bits en little-endian ya existente, siguiendo la misma frontera de resolver-leer-delegar que otros opcodes de memoria.
Implementación de ejemplo completa
# emulator/cpu/opcodes.py
def sbc_absolute(cpu: CPU):
addr = absolute(cpu)
value = cpu.bus.read(addr)
sbc(cpu, value)
OPCODE_TABLE = {
# ... existing entries ...
0xED: sbc_absolute,
}Invariantes importantes
absoluteconsume dos bytes de operando y devuelve la dirección de 16 bits- el manejador lee un byte de esa dirección
- solo
sbccambia A y las flags aritméticas - ejecutar la instrucción de tres bytes avanza PC en tres bytes
Concepto erróneo común
Los dos bytes de operando forman una dirección en orden little-endian; no son el valor a restar y no deben volver a ensamblarse en este envoltorio.
Fuera de alcance
- envoltorios de SBC absolutos indexados e indirectos
- cambios en el direccionamiento absoluto o en la aritmética de SBC
- la temporización de ciclos
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_066_SBC_absolute.py -v