100. Lsr absolute
Añadir LSR Absolute.
Lección 100 de 356 · tests/chapter_01_cpu/test_100_LSR_absolute.py
En este paso, expone LSR en memoria a través del resolutor absoluto de 16 bits ya existente.
Archivo y símbolos
emulator/cpu/opcodes.py: lsr_absolute, OPCODE_TABLE[0x4E]Por qué existe este paso
Después de las formas de página cero, esta transición expone LSR en memoria a través del resolutor absolute de 16 bits ya existente, conservando la implementación en la capa de instrucciones.
Implementación sugerida para este paso
# emulator/cpu/opcodes.py
def lsr_absolute(cpu: CPU):
addr = absolute(cpu)
lsr(cpu, addr)
OPCODE_TABLE = {
# existing entries unchanged
0x4E: lsr_absolute,
}Invariantes importantes
absolute(cpu)decodifica primero el byte bajo y después el byte alto- dos bytes de operando hacen de esta una instrucción de tres bytes
lsrlee y escribe en la dirección efectiva y reemplaza C/Z/N- A y los registros de índice permanecen sin cambios
Error conceptual habitual
Para 4E 00 02, el destino en little-endian es $0200, no $0002.
Fuera de alcance
- LSR Absolute,X en el test 101
- cambios en el direccionamiento absoluto o en el comportamiento de LSR
- la precisión de ciclos y el comportamiento de cruce de página
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_100_LSR_absolute.py -v