084. Instrucción iny
Añadir el comportamiento de la instrucción INY.
Lección 84 de 356 · tests/chapter_01_cpu/test_084_instruction_iny.py
En este paso, añade únicamente iny, antes de su mapeo de opcode en el Test 085 y del trabajo de DEY en los Tests 086-087.
Ubicación y símbolo en producción
emulator/cpu/instructions.py: `iny(cpu: CPU)`Por qué existe este paso
INY incrementa el registro Y independientemente de la decodificación del opcode y debe emular un registro de 8 bits pese a los enteros sin límite de Python.
Implementación sugerida
def iny(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 0xFF a 0x00
- Zero y Negative se calculan a partir del resultado enmascarado
- Carry, Overflow, la memoria y otros registros permanecen sin cambios
Concepto erróneo habitual
El incremento no activa Carry cuando Y da la vuelta; INY solo actualiza Z y N.
Fuera de alcance
- el despacho del opcode 0xC8 (test 085)
- el comportamiento y despacho de DEY (tests 086-087)
- el trabajo posterior de ASL y el temporizado de ciclos
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_084_instruction_iny.py -v