092. Asl zero page x
Añadir ASL Zero Page,X.
Lección 92 de 356 · tests/chapter_01_cpu/test_092_ASL_zero_page_x.py
En este paso, extiende la forma Zero Page del test 091 con indexación por X.
Archivo y símbolos
emulator/cpu/opcodes.py: asl_zero_page_x, OPCODE_TABLE[0x16]Por qué existe este paso
Después de que el test 091 conectara el ASL de página cero simple, esta transición reutiliza el resolutor zero_page_x ya establecido para que la indexación y el ajuste dentro de la página cero sigan siendo cuestiones de direccionamiento.
Implementación sugerida para este paso
# emulator/cpu/opcodes.py
def asl_zero_page_x(cpu: CPU):
addr = zero_page_x(cpu)
asl(cpu, addr)
OPCODE_TABLE = {
# existing entries unchanged
0x16: asl_zero_page_x,
}Invariantes importantes
- la dirección efectiva es
(operand + cpu.x) & 0xFF - se consume un byte de operando, por lo que PC avanza dos posiciones incluyendo el opcode
aslse encarga de la escritura en memoria y de las actualizaciones de Carry, Zero y Negative- la indexación cambia el destino, no el valor pasado a
asl
Error conceptual habitual
Zero Page,X no se desborda hacia la página uno: la base 0xFE más X=0x03 apunta a $0001.
Fuera de alcance
- ASL Absolute y Absolute,X en los tests 093-094
- modificar
zero_page_xoasl - la precisión de ciclos
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_092_ASL_zero_page_x.py -v