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