026. Sta absoluto y

Añadir STA absoluto,Y ($99).

Lección 26 de 356 · tests/chapter_01_cpu/test_026_STA_absolute_y.py

Archivo a actualizar

emulator/cpu/opcodes.py

Ubicaciones

opcodes.sta_absolute_y
opcodes.OPCODE_TABLE[$99]

Por qué existe este paso

Esta es la contraparte indexada con Y del Test 025. Reutiliza absolute_y para que el manejador solo coordine la resolución del destino y la escritura existente de sta.

Implementación de ejemplo completa

# emulator/cpu/opcodes.py
def sta_absolute_y(cpu) -> None:
    address = absolute_y(cpu)
    sta(cpu, address)


OPCODE_TABLE = {
    # Preserve existing entries.
    0x99: sta_absolute_y,
}

Invariantes importantes

  • dos bytes de operando forman la base antes de sumar Y
  • Y, no X, selecciona el destino final
  • la dirección indexada completa se pasa a sta
  • STA no actualiza flags

Concepto erróneo habitual

Copiar el manejador de absoluto,X sin cambiar el ayudante de direccionamiento usa de forma silenciosa el registro de índice incorrecto cuando X e Y difieren.

Fuera de alcance

  • opcodes de STA indirecto
  • el comportamiento de ciclos por cruce de página
  • cambios en absolute_y o sta

Ejecutar esta lección

uv run pytest tests/chapter_01_cpu/test_026_STA_absolute_y.py -v