045. Ldy absoluto
Añadir LDY absoluto ($AC).
Lección 45 de 356 · tests/chapter_01_cpu/test_045_LDY_absolute.py
Archivo a actualizar
emulator/cpu/opcodes.pyUbicaciones
opcodes imports of absolute and ldy
opcodes.ldy_absolute
opcodes.OPCODE_TABLE[$AC]Por qué existe este paso
El direccionamiento absoluto extiende LDY más allá de la página cero. El handler decodifica el operando little-endian de 16 bits ya existente, lee esa dirección y delega el valor cargado a ldy.
Ejemplo completo de implementación
# emulator/cpu/opcodes.py
from emulator.cpu.addressing_modes import absolute
from emulator.cpu.instructions import ldy
def ldy_absolute(cpu: CPU):
addr = absolute(cpu)
value = cpu.bus.read(addr)
ldy(cpu, value)
OPCODE_TABLE = {
# Preserve existing entries.
0xAC: ldy_absolute,
}Invariantes importantes
- $AC se mapea a ldy_absolute y consume dos bytes de operando
- absoluto combina primero el byte bajo y luego el byte alto
- el handler lee la dirección efectiva y pasa el valor resultante a ldy
- la ejecución avanza tres bytes en total, incluyendo el opcode
Error frecuente
No se debe invertir AC 00 02; el helper absoluto establecido resuelve esos bytes de operando a $0200, no a $0002.
Fuera de alcance
- LDY absoluto,X
- modificar el helper de direccionamiento absoluto
- temporización de ciclos
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_045_LDY_absolute.py -v