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.py

Ubicaciones

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