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
  • lsr lee 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