W języku IL (Instruction List) kolejne instrukcje działają na bieżącej wartości w akumulatorze (wyniku pośrednim), a dopiero instrukcja zapisu przenosi wynik na zmienną/wyjście.
Analiza programu:
- LD %I0.1 – do akumulatora trafia stan wejścia I0.1.
- OR %I0.2 – wykonywana jest suma logiczna akumulatora z wejściem I0.2, więc akumulator przyjmuje wartość: I0.1 OR I0.2.
- STN %Q0.1 – na wyjście Q0.1 zostaje zapisany wynik zanegowany (Store Negated): Q0.1 = NOT(akumulator) = NOT(I0.1 OR I0.2).
Definicja bramki NOR to właśnie negacja sumy logicznej: NOR(A,B) = NOT(A OR B). Zatem taki program realizuje NOR.
Dlaczego pozostałe odpowiedzi są błędne?
- "OR" byłoby poprawne, gdyby na końcu użyto instrukcji zapisu bez negacji (np. ST), bo wtedy Q0.1 = I0.1 OR I0.2.
- "NAND" to NOT(A AND B). Aby uzyskać NAND, w kodzie musiałaby pojawić się operacja AND (koniunkcja), a nie OR.
- "XOR" to alternatywa wykluczająca (prawda, gdy wejścia są różne). Do tego potrzebna jest dedykowana operacja XOR lub równoważny układ instrukcji; sama sekwencja OR + negacja daje NOR, nie XOR.
Wskazówka egzaminacyjna: zawsze sprawdzaj ostatnią instrukcję "zapisującą" (ST, STN itd.). To ona decyduje, czy wynik jest negowany przed podaniem na wyjście.