042. Ldy inmediato

Añadir LDY inmediato ($A0).

Lección 42 de 356 · tests/chapter_01_cpu/test_042_LDY_immediate.py

Archivo a actualizar

emulator/cpu/opcodes.py

Ubicaciones

opcodes import of ldy
opcodes.ldy_immediate
opcodes.OPCODE_TABLE[$A0]

Por qué existe este paso

La instrucción principal ldy ya gestiona el comportamiento del registro y los flags. Esta lección conecta su primera codificación obteniendo un operando literal de un byte y pasando ese valor a ldy.

Ejemplo completo de implementación

# emulator/cpu/opcodes.py
from emulator.cpu.addressing_modes import immediate
from emulator.cpu.instructions import ldy


def ldy_immediate(cpu: CPU):
    ldy(cpu, immediate(cpu))


OPCODE_TABLE = {
    # Preserve existing entries.
    0xA0: ldy_immediate,
}

Invariantes importantes

  • $A0 se mapea a ldy_immediate
  • el modo inmediato obtiene exactamente un byte de operando, avanzando PC en uno tras el opcode
  • el operando en sí se carga; no se trata como una dirección de memoria
  • ldy sigue siendo responsable de actualizar Zero y Negative

Error frecuente

No se debe leer el bus en el valor numérico del byte inmediato. Para A0 42, Y recibe $42 directamente.

Fuera de alcance

  • codificaciones de LDY en página cero, indexado y absoluto
  • handlers de opcode de STY
  • temporización de ciclos

Ejecutar esta lección

uv run pytest tests/chapter_01_cpu/test_042_LDY_immediate.py -v