093. Asl absolute
Añadir ASL Absolute.
Lección 93 de 356 · tests/chapter_01_cpu/test_093_ASL_absolute.py
En este paso, extiende ASL en memoria al resolutor absoluto de 16 bits ya existente.
Archivo y símbolos
emulator/cpu/opcodes.py: asl_absolute, OPCODE_TABLE[0x0E]Por qué existe este paso
Esta transición extiende el mismo comportamiento de ASL en memoria desde direcciones de página cero hasta el resolutor absolute de 16 bits ya existente; la semántica de la instrucción no cambia.
Implementación sugerida para este paso
# emulator/cpu/opcodes.py
def asl_absolute(cpu: CPU):
addr = absolute(cpu)
asl(cpu, addr)
OPCODE_TABLE = {
# existing entries unchanged
0x0E: asl_absolute,
}Invariantes importantes
absolute(cpu)consume primero el byte bajo y después el byte alto, y devuelve una dirección de 16 bits- la instrucción de tres bytes avanza PC en tres posiciones incluyendo el opcode
asllee y escribe en la ubicación de memoria resuelta y actualiza C, Z y N- A y X no cambian
Error conceptual habitual
Para 0E 00 02, la decodificación little-endian apunta a $0200, no a $0002.
Fuera de alcance
- ASL Absolute,X en el test 094
- cambios en el direccionamiento absoluto o en la semántica de ASL
- la precisión de ciclos
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_093_ASL_absolute.py -v