Instrukcja NOP w rodzinie MCS-51 (8051) jest rozkazem, którego celem jest brak zmiany stanu układu z punktu widzenia danych programu. Oznacza to, że po jej wykonaniu nie zmienia się zawartość typowych rejestrów roboczych (np. akumulatora) ani nie zachodzi obliczenie na operandach. Jedynym "efektem" jest to, że mikrokontroler zużywa czas na pobranie i wykonanie tej instrukcji, więc przesuwa się licznik rozkazów i mija określona liczba taktów.
Odpowiedź "nie wywoła żadnych efektów, zajmie jedynie czas 1 cyklu maszynowego" oddaje istotę NOP: brak operacji na danych + koszt czasowy. W praktyce NOP stosuje się m.in. do:
- bardzo krótkich opóźnień (gdy wystarczy stały, mały narzut czasowy),
- wyrównania czasów wykonania w różnych gałęziach programu (timing),
- pozostawienia miejsca w kodzie na późniejsze modyfikacje.
Pozostałe odpowiedzi opisują działania charakterystyczne dla innych instrukcji, nie dla NOP. Przesunięcie akumulatora w prawo wymaga rozkazu typu przesunięcie/rotacja (to operacja bitowa wpływająca na zawartość rejestru), więc nie może być skutkiem "no operation". Skok warunkowy do adresu "zapisanego w akumulatorze" nie pasuje do typowych mechanizmów skoku w 8051 (skoki korzystają z określonych form adresowania i nie są "NOP"). Z kolei logiczny iloczyn (AND) to klasyczna operacja logiczna, która musi zmienić wynik w rejestrze docelowym, więc również przeczy idei NOP.
Uwaga egzaminacyjna: w części odmian/rdzeni zgodnych z 8051 szczegóły czasowe mogą zależeć od implementacji i zegara, ale sens NOP pozostaje ten sam: brak modyfikacji danych programu przy zużyciu czasu wykonania instrukcji.