024. Sta absoluto
Añadir STA absoluto ($8D).
Lección 24 de 356 · tests/chapter_01_cpu/test_024_STA_absolute.py
Archivo a actualizar
emulator/cpu/opcodes.pyUbicaciones
opcodes.sta_absolute
opcodes.OPCODE_TABLE[$8D]Por qué existe este paso
STA ahora necesita un destino completo de 16 bits. La lección reutiliza absolute y sta para demostrar que el cambio en la anchura del operando pertenece al direccionamiento, no a la propia instrucción de almacenamiento.
Implementación de ejemplo completa
# emulator/cpu/opcodes.py
def sta_absolute(cpu) -> None:
address = absolute(cpu)
sta(cpu, address)
OPCODE_TABLE = {
# Preserve existing entries.
0x8D: sta_absolute,
}Invariantes importantes
- absolute consume primero el byte bajo y después el byte alto
- la dirección de 16 bits resultante se pasa directamente a sta
- $8D avanza el PC tres bytes, incluyendo el opcode
- almacenar A deja Zero y Negative sin cambios
Concepto erróneo habitual
Los dos bytes de operando codifican una única dirección de destino en little-endian; no son dos valores que escribir y no deben leerse como big-endian.
Fuera de alcance
- opcodes de STA absoluto indexado
- cambios en absolute o sta
- el tiempo de ciclos
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_024_STA_absolute.py -v