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.py

Ubicaciones

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