086. Instrucción dey
Añadir el comportamiento de la instrucción DEY.
Lección 86 de 356 · tests/chapter_01_cpu/test_086_instruction_dey.py
En este paso, añade únicamente dey; el Test 087 conecta el opcode una vez que el comportamiento ya existe.
Ubicación y símbolo en producción
emulator/cpu/instructions.py: `dey(cpu: CPU)`Por qué existe este paso
DEY es responsable del decremento del registro Y y de sus efectos en el estado, independientemente de la decodificación. Se requiere el enmascarado para modelar el subdesbordamiento en un registro de 8 bits.
Implementación sugerida
def dey(cpu: CPU):
result = cpu.y - 1
result_8 = result & 0xFF
# Set flags
cpu.flags.set_negative_flag((result_8 & 0b1000_0000) != 0)
cpu.flags.set_zero_flag(result_8 == 0)
cpu.y = result_8Invariantes importantes
- Y da la vuelta de 0x00 a 0xFF
- Zero y Negative reflejan el resultado enmascarado de 8 bits
- Carry y Overflow se preservan; no se accede a memoria
Concepto erróneo habitual
DEY no es SBC aplicado a Y y no debe usar Carry como entrada de préstamo.
Fuera de alcance
- importar
deyy mapear el opcode 0x88 (test 087) - el comportamiento y despacho previos de INY
- el trabajo posterior de ASL y el temporizado de ciclos
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_086_instruction_dey.py -v