039. Stx absoluto

Añadir STX absoluto ($8E).

Lección 39 de 356 · tests/chapter_01_cpu/test_039_STX_absolute.py

Archivo a actualizar

emulator/cpu/opcodes.py

Ubicaciones

opcodes.stx_absolute
opcodes.OPCODE_TABLE[$8E]

Por qué existe este paso

Esta lección añade la forma de destino de 16 bits completa de STX. El helper absolute ya existente decodifica la dirección little-endian, mientras que stx sigue siendo responsable únicamente de escribir X.

Implementación de ejemplo completa

# emulator/cpu/opcodes.py
def stx_absolute(cpu: CPU):
    addr = absolute(cpu)
    stx(cpu, addr)


OPCODE_TABLE = {
    # Preserve existing entries.
    0x8E: stx_absolute,
}

Invariantes importantes

  • $8E se corresponde con stx_absolute
  • absolute consume el byte bajo y luego el byte alto, y devuelve la dirección de destino
  • la propia dirección se pasa a stx, que escribe X a través del bus
  • la instrucción completa avanza PC en tres y no modifica los flags

Concepto erróneo habitual

8E 00 02 guarda X en $0200; el operando es un destino little-endian, no un valor que cargar en X ni una dirección big-endian.

Fuera de alcance

  • las codificaciones de STX absoluto indexado, que no forman parte del conjunto de STX admitido
  • cambios en absolute o stx
  • la temporización de ciclos

Ejecutar esta lección

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