032. Ldx página cero
Añadir LDX página cero ($A6).
Lección 32 de 356 · tests/chapter_01_cpu/test_032_LDX_zero_page.py
Archivo a actualizar
emulator/cpu/opcodes.pyUbicaciones
opcodes.ldx_zero_page
opcodes.OPCODE_TABLE[$A6]Por qué existe este paso
Tras el LDX inmediato, esta lección añade la primera codificación de LDX respaldada por memoria. El manejador combina el cálculo de dirección de página cero ya existente, una lectura del bus y la operación de valor ldx ya existente.
Implementación de ejemplo completa
# emulator/cpu/opcodes.py
def ldx_zero_page(cpu: CPU):
addr = zero_page(cpu)
value = cpu.bus.read(addr)
ldx(cpu, value)
OPCODE_TABLE = {
# Preserve existing entries.
0xA6: ldx_zero_page,
}Invariantes importantes
- $A6 se corresponde con ldx_zero_page
- zero_page obtiene un byte de operando y devuelve una dirección en la página $00
- el manejador lee esa dirección y pasa el valor resultante a ldx
- la instrucción completa avanza PC en dos bytes y ldx actualiza los flags
Concepto erróneo habitual
No pases la dirección de página cero directamente a ldx; LDX carga el byte almacenado en esa dirección.
Fuera de alcance
- las codificaciones de LDX indexadas y en modo absoluto
- cambios en zero_page o ldx
- la temporización de ciclos
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_032_LDX_zero_page.py -v