040. Instrucción ldy

Añadir la instrucción LDY principal.

Lección 40 de 356 · tests/chapter_01_cpu/test_040_instruction_ldy.py

Archivo a actualizar

emulator/cpu/instructions.py

Ubicación

instructions.ldy, beside stx

Por qué existe este paso

LDY inicia la familia de carga del registro Y estableciendo su comportamiento a nivel de valor antes de conectar ningún opcode de LDY. Refleja a LDA y LDX: asigna un valor ya resuelto al registro de destino y luego actualiza Zero y Negative.

Implementación de ejemplo completa

# emulator/cpu/instructions.py
def ldy(cpu: CPU, value):
    cpu.y = value
    cpu._update_zero_and_negative_flags(cpu.y)

Invariantes importantes

  • ldy recibe un valor, no una dirección
  • Y recibe el valor mientras A y X permanecen sin cambios
  • Zero se activa exactamente para $00 y se desactiva en caso contrario
  • Negative refleja el bit 7 y se desactiva cuando el bit 7 es cero

Concepto erróneo habitual

No obtengas un operando ni leas memoria dentro de ldy; los futuros manejadores de opcode resolverán un valor antes de llamar a esta instrucción.

Fuera de alcance

  • todos los manejadores de opcode de LDY y sus entradas en la tabla de opcodes
  • la instrucción STY y sus codificaciones
  • la temporización de ciclos

Ejecutar esta lección

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