044. Ldy página cero x
Añadir LDY página cero,X ($B4).
Lección 44 de 356 · tests/chapter_01_cpu/test_044_LDY_zero_page_x.py
Archivo a actualizar
emulator/cpu/opcodes.pyUbicaciones
opcodes imports of zero_page_x and ldy
opcodes.ldy_zero_page_x
opcodes.OPCODE_TABLE[$B4]Por qué existe este paso
Esta codificación reutiliza el cálculo de dirección ya establecido de página cero,X, incluyendo su ajuste a ocho bits, antes de cargar el byte resuelto a través de la instrucción principal ldy.
Ejemplo completo de implementación
# emulator/cpu/opcodes.py
from emulator.cpu.addressing_modes import zero_page_x
from emulator.cpu.instructions import ldy
def ldy_zero_page_x(cpu: CPU):
addr = zero_page_x(cpu)
value = cpu.bus.read(addr)
ldy(cpu, value)
OPCODE_TABLE = {
# Preserve existing entries.
0xB4: ldy_zero_page_x,
}Invariantes importantes
- $B4 se mapea a ldy_zero_page_x y consume un byte de operando
- X, no Y, indexa el operando de página cero
- la dirección efectiva se ajusta dentro de la página $00
- el valor de memoria resuelto se pasa a ldy, que actualiza Zero y Negative
Error frecuente
LDY nombra el registro de destino, no el registro índice. La codificación $B4 utiliza X para calcular la dirección.
Fuera de alcance
- codificaciones de LDY en absoluto y absoluto,X
- modificar zero_page_x
- temporización de ciclos
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_044_LDY_zero_page_x.py -v