049. Sty absoluto

Añadir STY absoluto ($8C).

Lección 49 de 356 · tests/chapter_01_cpu/test_049_STY_absolute.py

Archivo a actualizar

emulator/cpu/opcodes.py

Ubicaciones

opcodes imports of absolute and sty
opcodes.sty_absolute
opcodes.OPCODE_TABLE[$8C]

Por qué existe este paso

STY absoluto completa la familia soportada de STY decodificando un destino de 16 bits y pasando esa dirección a la instrucción de almacenamiento existente.

Ejemplo completo de implementación

# emulator/cpu/opcodes.py
from emulator.cpu.addressing_modes import absolute
from emulator.cpu.instructions import sty


def sty_absolute(cpu: CPU):
    addr = absolute(cpu)
    sty(cpu, addr)


OPCODE_TABLE = {
    # Preserve existing entries.
    0x8C: sty_absolute,
}

Invariantes importantes

  • $8C se mapea a sty_absolute y consume dos bytes de operando
  • el operando little-endian se resuelve como una dirección de destino de 16 bits
  • sty escribe Y en esa dirección a través del bus
  • la ejecución avanza tres bytes en total y los flags permanecen sin cambios

Error frecuente

No se debe pasar un valor leído de la dirección absoluta a sty; la instrucción principal de almacenamiento requiere la dirección de destino en sí.

Fuera de alcance

  • instrucciones de transferencia y sus opcodes
  • modos de direccionamiento adicionales de STY
  • temporización de ciclos y efectos hardware en el lado de escritura

Ejecutar esta lección

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