024. Sta absoluto

Añadir STA absoluto ($8D).

Lección 24 de 356 · tests/chapter_01_cpu/test_024_STA_absolute.py

Archivo a actualizar

emulator/cpu/opcodes.py

Ubicaciones

opcodes.sta_absolute
opcodes.OPCODE_TABLE[$8D]

Por qué existe este paso

STA ahora necesita un destino completo de 16 bits. La lección reutiliza absolute y sta para demostrar que el cambio en la anchura del operando pertenece al direccionamiento, no a la propia instrucción de almacenamiento.

Implementación de ejemplo completa

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


OPCODE_TABLE = {
    # Preserve existing entries.
    0x8D: sta_absolute,
}

Invariantes importantes

  • absolute consume primero el byte bajo y después el byte alto
  • la dirección de 16 bits resultante se pasa directamente a sta
  • $8D avanza el PC tres bytes, incluyendo el opcode
  • almacenar A deja Zero y Negative sin cambios

Concepto erróneo habitual

Los dos bytes de operando codifican una única dirección de destino en little-endian; no son dos valores que escribir y no deben leerse como big-endian.

Fuera de alcance

  • opcodes de STA absoluto indexado
  • cambios en absolute o sta
  • el tiempo de ciclos

Ejecutar esta lección

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