094. Asl absolute x

Añadir ASL Absolute,X.

Lección 94 de 356 · tests/chapter_01_cpu/test_094_ASL_absolute_x.py

En este paso, completa la secuencia de direccionamiento de ASL con Absolute,X.

Archivo y símbolos

emulator/cpu/opcodes.py: asl_absolute_x, OPCODE_TABLE[0x1E]

Por qué existe este paso

Esta es la última transición de direccionamiento de ASL. Combina el resolutor absolute_x ya existente con la implementación de asl en memoria introducida anteriormente.

Implementación sugerida para este paso

# emulator/cpu/opcodes.py
def asl_absolute_x(cpu: CPU):
    addr = absolute_x(cpu)
    asl(cpu, addr)

OPCODE_TABLE = {
    # existing entries unchanged
    0x1E: asl_absolute_x,
}

Invariantes importantes

  • decodifica la base de 16 bits en little-endian antes de sumar X
  • la instrucción sigue ocupando tres bytes; X es un registro, no otro operando
  • asl se encarga de la lectura/modificación/escritura y de las actualizaciones de flags en la dirección efectiva
  • el acumulador no cambia

Error conceptual habitual

Para 1E 00 02 con X=0x04, suma X a $0200, no a ninguno de los bytes de operando.

Fuera de alcance

  • LSR, introducido por los tests 095-101
  • modificar absolute_x o asl
  • el cruce de página y la precisión de ciclos de lectura/modificación/escritura

Ejecutar esta lección

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