050. Instrucciones de transferencia
Añadir las instrucciones principales TAX, TXA, TAY y TYA.
Lección 50 de 356 · tests/chapter_01_cpu/test_050_transfer_instructions.py
Archivo a actualizar
emulator/cpu/instructions.pyUbicaciones
instructions.tax
instructions.txa
instructions.tay
instructions.tyaPor qué existe este paso
Estas operaciones de direccionamiento implícito copian entre A, X e Y sin obtener un operando. Cada valor de destino utiliza luego la misma actualización de Zero/Negative ya empleada por las instrucciones de carga.
Ejemplo completo de implementación
# emulator/cpu/instructions.py
def tax(cpu: CPU):
cpu.x = cpu.a
cpu._update_zero_and_negative_flags(cpu.x)
def txa(cpu: CPU):
cpu.a = cpu.x
cpu._update_zero_and_negative_flags(cpu.a)
def tay(cpu: CPU):
cpu.y = cpu.a
cpu._update_zero_and_negative_flags(cpu.y)
def tya(cpu: CPU):
cpu.a = cpu.y
cpu._update_zero_and_negative_flags(cpu.a)Invariantes importantes
- TAX copia A en X, TXA copia X en A, TAY copia A en Y y TYA copia Y en A
- el registro fuente permanece sin cambios
- Zero se activa exactamente para $00 y Negative refleja el bit 7 del destino
- ambos flags también se desactivan cuando el valor copiado ya no los satisface
- estas funciones no obtienen bytes y no realizan acceso al bus
Error frecuente
Actualizar solo los flags que se activan deja estado obsoleto. Reutilizar cpu._update_zero_and_negative_flags con el registro de destino después de cada copia.
Fuera de alcance
- importaciones de opcodes de transferencia y entradas en OPCODE_TABLE, introducidas en Test 051
- transferencias del puntero de pila
- temporización de ciclos
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_050_transfer_instructions.py -v