125. Instruction or a
implementar el comportamiento de ORA independiente del direccionamiento.
Lección 125 de 356 · tests/chapter_01_cpu/test_125_instruction_or_a.py
Por qué existe este paso
Una única primitiva de ORA orientada a valores centraliza el resultado del OR inclusivo y las reglas de flags antes de que los manejadores de opcode introduzcan las formas de direccionamiento individuales.
En este paso, tras completar AND en las lecciones 116-124, añade solo este símbolo a `emulator/cpu/instructions.py`:
def or_a(cpu: CPU, value: int):
result_8 = (cpu.a | value) & 0xFF
# Flags:
cpu.flags.set_zero_flag(result_8 == 0)
cpu.flags.set_negative_flag((result_8 & 0b1000_0000) != 0)
cpu.a = result_8La API orientada a valores mantiene la semántica de ORA independiente del direccionamiento. El resultado de ocho bits se almacena en A; Zero refleja la igualdad con cero y Negative refleja el bit 7 del resultado. Carry, Overflow, la memoria, X, Y y PC son invariantes porque `or_a` no los toca.
Concepto erróneo: ORA significa OR bit a bit inclusivo, no XOR, y `value no es una dirección de bus. Fuera de alcance: importar or_a en emulator/cpu/opcodes.py` y todos los manejadores de ORA (lecciones 126-133), además de los símbolos EOR y BIT introducidos en las lecciones 134 y 143.
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_125_instruction_or_a.py -v