025. Sta absoluto x
Añadir STA absoluto,X ($9D).
Lección 25 de 356 · tests/chapter_01_cpu/test_025_STA_absolute_x.py
Archivo a actualizar
emulator/cpu/opcodes.pyUbicaciones
opcodes.sta_absolute_x
opcodes.OPCODE_TABLE[$9D]Por qué existe este paso
Esto aplica el cálculo de dirección absolute_x, ya probado, a las escrituras. La capa de opcode selecciona el indexado con X; sta sigue siendo independiente del modo de direccionamiento.
Implementación de ejemplo completa
# emulator/cpu/opcodes.py
def sta_absolute_x(cpu) -> None:
address = absolute_x(cpu)
sta(cpu, address)
OPCODE_TABLE = {
# Preserve existing entries.
0x9D: sta_absolute_x,
}Invariantes importantes
- dos bytes de operando forman la dirección base antes de sumar X
- se usa la dirección indexada completa; el indexado no tiene envoltura de página cero
- el manejador almacena A y consume tres bytes de instrucción
- STA no actualiza flags
Concepto erróneo habitual
Absoluto,X no enmascara la suma a ocho bits. Esa regla de envoltura pertenece a página cero,X, no a $hhhh,X.
Fuera de alcance
- opcodes de STA absoluto,Y e indirecto
- el comportamiento de ciclos por cruce de página
- cambios en absolute_x o sta
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_025_STA_absolute_x.py -v