Lista rozkazów mikrokomputerów rodziny MCS-51 zawiera 111 rozkazów: 49 jedno-, 45 dwu- i 17 trzy bajtowych, wykonywanych w ciągu jednego, dwóch lub czterech (tylko mnożenie i dzielenie) cykli maszynowych. Można wyróżnić kilka grup rozkazów.
Rozkazy przesłać umożliwiają: przesyłanie danych przede wszystkim między komórkami wewnętrznej pamięci danych (zarówno jej części użytkowej, jak i obszaru SFR), wpisywanie stałych do wewnętrznej pamięci danych oraz przesyłanie danych między akumulatorem a pamięcią programu i zewnętrzną pamięcią danych.
Grupa rozkazów arytmetyczno-logicznych obejmuje rozkazy dotyczące operacji arytmetycznych (dodawania, odejmowania, mnożenia, dzielenia, przesunięć), pozwalające na łatwe wykonywanie złożonych obliczeń na liczbach dwójkowych dodatnich (bez znaku), a także prostszych obliczeń na liczbach dwójkowych ze znakiem (w kodzie U2) i liczbach dziesiętnych (w kodzie BCD). Do grupy tej należą też rozkazy umożliwiające wykonywanie operacji logicznych, przy czym część z nich (OR, AND, EXOR) bezpośrednio dotyczy zawartości pamięci danych.
Wśród rozkazów skoków są rozkazy pozwalające na wykonywanie skoków bezwarunkowych i skoków do podprogramu oraz skoków warunkowych (tabl. 4.1). Te ostatnie umożliwiają sprawdzanie stanu akumulatora, znacznika przeniesienia, dowolnego bitu z obszaru pamięci adresowanego bitowo, jak również porównywanie zawartości akumulatora, rejestrów roboczych czy komórek pamięci.
Rozkazy działające na bitach umożliwiają przesyłanie i wykonywanie operacji logicznych (AND, OR, NOT) na pojedynczych bitach z adresowanego bitowo obszaru wewnętrznej pamięci danych. Funkcję akumulatora dla operacji logicznych na bitach spełnia znacznik przeniesienia CY.
Tablica 41. Rozkazy skoków warunkowych
Mnemonik |
Warunek |
Układ testowany |
JZ |
ACC = 0 |
Akumulator |
JNZ |
ACC#0 | |
JC |
CY = 1 |
Znacznik przeniesienia |
JNC |
CY — 0 | |
JB |
(bit) = 1 | |
JNB |
(bit) “ 0 |
Bit adresowany bezpośrednio |
JBC |
(bit) = 1 | |
CJNE |
ACC ^ n |
Akumulator, argument bezpośredni, pamięć, |
ACC * (ad) Rr *n (Ri) # n |
rejestr roboczy (porównanie) |
Nie wyróżnia się tutaj typowej dla mikroprocesorów grupy rozkazów wejścia-wyjścia oraz rozkazów sterujących. Porty wejścia-wyjścia i wszystkie słowa sterujęce blokami mikrokomputera są umieszczone jako rejestry specjalne w przestrzeni adresowej wewnętrznej pamięci danych. W związku z tym, wszystkie rozkazy z wyżej wymienionych grup, dotyczące zawartości portów wejścia-wyjścia czy też słów sterujących, są - odpowiednio - rozkazami wejścia-wyjścia i rozkazami sterującymi
W punkcie 1.2.3. zestawiono wszystkie rozkazy, pogrupowane funkcjonalnie i w kolejności numerycznej kodów. W dalszej części niniejszego rozdziału opisano możliwe tryby adresowania oraz wszystkie rozkazy zestawione w kolejności alfabetycznej mnemoników.
Tryby adresowania
Tryby adresowania argumentów rozkazów przesłań i rozkazów arytmetyczno-logicznych zależą od miejsca ich umieszczenia (w pamięci programu, wewnętrznej lub zewnętrznej pamięci danych).