030. Instrucción ldx
Añadir la instrucción central LDX.
Lección 30 de 356 · tests/chapter_01_cpu/test_030_instruction_ldx.py
Archivo a actualizar
emulator/cpu/instructions.pyUbicación
instructions.ldx, beside lda and staPor qué existe este paso
LDX inicia la siguiente familia de cargas preservando el límite entre instrucción y opcode establecido para LDA. La instrucción central recibe un valor ya resuelto, lo almacena en X y aplica las mismas reglas de Zero/Negative que lda.
Implementación de ejemplo completa
# emulator/cpu/instructions.py
def ldx(cpu, value) -> None:
cpu.x = value
cpu._update_zero_and_negative_flags(cpu.x)Invariantes importantes
- ldx recibe un valor, no una dirección
- X recibe el valor mientras A e Y permanecen sin cambios
- Zero se activa exactamente para $00 y se desactiva en cualquier otro caso
- Negative refleja el bit 7 y se desactiva cuando el bit 7 es cero
Concepto erróneo habitual
No obtengas un operando ni leas el bus dentro de ldx; los manejadores de opcode realizarán el direccionamiento y el acceso a memoria antes de llamar a esta instrucción.
Fuera de alcance
- todos los manejadores de opcode de LDX y las entradas de la tabla de opcodes
- la integración de página cero,Y con un opcode
- la posterior refactorización de FlagsHandler
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_030_instruction_ldx.py -v