097. Lsr accumulator
Añadir el opcode LSR Accumulator.
Lección 97 de 356 · tests/chapter_01_cpu/test_097_LSR_accumulator.py
En este paso, expone el comportamiento con el acumulador del test 096 a través del despacho de opcodes.
Archivo y símbolos
emulator/cpu/opcodes.py: imported lsr_a, OPCODE_TABLE[0x4A]Por qué existe este paso
El test 096 estableció el comportamiento con el acumulador. Esta transición hace que el despacho de la CPU llegue directamente a esa función, ya que el modo de acumulador no tiene operando ni decodificación de dirección.
Implementación sugerida para este paso
# emulator/cpu/opcodes.py
from emulator.cpu.instructions import lsr_a
OPCODE_TABLE = {
# existing entries unchanged
0x4A: lsr_a,
}Invariantes importantes
- la tabla mapea directamente a
instructions.lsr_a; no se necesita ningún envoltorio - ningún ayudante de direccionamiento consume bytes
- CPU.step ya ha consumido el opcode, por lo que PC avanza exactamente un byte
- solo pueden cambiar A y C/Z/N
Error conceptual habitual
El modo de acumulador no es el modo de página cero con una dirección implícita; 0x4A no tiene operando.
Fuera de alcance
- los opcodes de LSR en memoria en los tests 098-101
- cambios en el despacho de la CPU o en
lsr_a - la precisión de ciclos
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_097_LSR_accumulator.py -v