031. Ldx inmediato
Añadir LDX inmediato ($A2).
Lección 31 de 356 · tests/chapter_01_cpu/test_031_LDX_immediate.py
Archivo a actualizar
emulator/cpu/opcodes.pyUbicaciones
opcodes import of ldx
opcodes.ldx_immediate
opcodes.OPCODE_TABLE[$A2]Por qué existe este paso
El test 030 introdujo la instrucción ldx a nivel de valor. Esta lección conecta su primera codificación en código máquina obteniendo el operando literal y delegando el comportamiento del registro y los flags en esa instrucción ya existente.
Implementación de ejemplo completa
# emulator/cpu/opcodes.py
from emulator.cpu.instructions import lda, sta, ldx
def ldx_immediate(cpu: CPU):
ldx(cpu, immediate(cpu))
OPCODE_TABLE = {
# Preserve existing entries.
0xA2: ldx_immediate,
}Invariantes importantes
- $A2 se corresponde con ldx_immediate
- el modo inmediato obtiene exactamente un byte, por lo que la instrucción completa avanza PC en dos
- el propio byte de operando se carga en X; no se utiliza como dirección
ldxsigue siendo responsable de actualizar Zero y Negative
Concepto erróneo habitual
No leas memoria en el valor numérico del operando. A2 42 carga el propio $42 en X.
Fuera de alcance
- las codificaciones de LDX en modo página cero, página cero,Y y absoluto
- cambios en immediate o ldx
- la temporización de ciclos
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_031_LDX_immediate.py -v