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
aslse 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_xoasl - 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