099. Lsr zero page x
Añadir LSR Zero Page,X.
Lección 99 de 356 · tests/chapter_01_cpu/test_099_LSR_zero_page_x.py
En este paso, añade indexación por X a la forma Zero Page de LSR del test 098.
Archivo y símbolos
emulator/cpu/opcodes.py: lsr_zero_page_x, OPCODE_TABLE[0x56]Por qué existe este paso
Esta transición añade LSR indexado en página cero combinando el resolutor zero_page_x ya existente con lsr en memoria; no añade nueva semántica de desplazamiento.
Implementación sugerida para este paso
# emulator/cpu/opcodes.py
def lsr_zero_page_x(cpu: CPU):
addr = zero_page_x(cpu)
lsr(cpu, addr)
OPCODE_TABLE = {
# existing entries unchanged
0x56: lsr_zero_page_x,
}Invariantes importantes
- el cálculo de la dirección efectiva se ajusta a ocho bits dentro de la página cero
- solo se consume un byte de operando, por lo que PC avanza dos posiciones incluyendo el opcode
lsrse encarga de la escritura en memoria y de los cambios en C/Z/N- X selecciona el destino y no se modifica
Error conceptual habitual
La base 0xFE más X=0x03 apunta a $0001, no a $0101.
Fuera de alcance
- LSR Absolute y Absolute,X en los tests 100-101
- cambios en el direccionamiento o en el comportamiento de LSR
- la precisión de ciclos
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_099_LSR_zero_page_x.py -v