065. Sbc zero page x
Añadir SBC Zero Page,X.
Lección 65 de 356 · tests/chapter_01_cpu/test_065_SBC_zero_page_x.py
Archivo a actualizar
emulator/cpu/opcodes.pySímbolos a añadir/actualizar
opcodes.sbc_zero_page_x and OPCODE_TABLE[0xF5]Por qué existe este paso
SBC gana ahora acceso indexado a página cero componiendo el resolutor zero_page_x existente con una lectura de memoria y la instrucción sbc existente.
Implementación de ejemplo completa
# emulator/cpu/opcodes.py
def sbc_zero_page_x(cpu: CPU):
addr = zero_page_x(cpu)
value = cpu.bus.read(addr)
sbc(cpu, value)
OPCODE_TABLE = {
# ... existing entries ...
0xF5: sbc_zero_page_x,
}Invariantes importantes
zero_page_xobtiene un operando, suma X y se ajusta dentro de la página $00- el manejador lee la dirección resuelta exactamente una vez
- el valor leído, no su dirección, se pasa a
sbc - ejecutar la instrucción de dos bytes avanza PC en dos bytes
Concepto erróneo común
No reproduzcas la indexación en el envoltorio de opcode ni permitas que $FF + X entre en la página $01; ese ajuste ya es responsabilidad de zero_page_x.
Fuera de alcance
- envoltorios de SBC absolutos e indirectos
- cambios en los asistentes de direccionamiento o en la aritmética de SBC
- la temporización de ciclos
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_065_SBC_zero_page_x.py -v