Lista rozkazów rodziny MCS-48

W dalszej części tego rozdziału zamieszczono dokładny opis możliwych trybów adresowania oraz wszystkich rozkazów (również dla mikrokomputerów 8020/21 i 8022) w kolejności alfabetycznej mnemoników.

W zestawieniu przyjęto następujące oznaczenia:
A    - akumulator
Ab   - bit nr b akumulatora, b=0...7
Rr   - rejestr roboczy, r=0...7
Ri   - rejestr roboczy - wskaźnik danych, i=0,1
PC   - licznik rozkazów
T    - licznik w ukladzie czasowo-licznikowym
PSW  - słowo stanu programu
SP   - wskaźnik stosu
AC   - znacznik przeniesienia pomocniczego
F0,F1- znaczniki programowe
TF   - znacznik przepełnienia licznika
BS   - wzkaźnik zbioru rejestrów
DBF  - wskaźnik tomu
T0,T1- wejście testowe
INT  - wejście przerywające
Pp   - port mikrokomputera, p=1,2
Pe   - port ekspandera, e=4...7
n    - argument bezpośredni
adr  - adres bezpośredni
@    - w mnemoniku poprzedza adres pośredni
#    - w mnemoniku poprzedza adgument bezpośredni
X    - w zapisie operacji - zawartość rejestru X
(X)  - w zapisie operacji - zawartość pamięci o adresie X

Opis rozkazów:


ADD A,Rr

Operacja: A=A+Rr gdzie r=0...7

Kod: +---+---+---+---+---+---+---+---+                  68-6Fh
     | 0 | 1 | 1 | 0 | 1 |r2 |r1 |r0 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Do zawartości akumulatora dodaje się zawartość rejestru z ustawionego w danej chwili zbioru; wynik wpisuje się do akumulatora; aą ustawiane znacznik C i AC.


ADD A,@Ri

Operacja: A=A+(Ri) gdzie i=0,1

Kod: +---+---+---+---+---+---+---+---+                  60,61h
     | 0 | 1 | 1 | 0 | 0 | 0 | 0 | i |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Do zawartości akumulatora dodaje się zawartość komórki wewnętrznej pamięci danych o adresie zawartym w rejestrze R0 lub R1 z ustawionego w danej chwili zbioru; wynik wpisuje się do akumulatora; aą ustawiane znacznik C i AC.


ADD A,#n

Operacja: A=A+n

Kod: +---+---+---+---+---+---+---+---+                  03h
     | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
     +---+---+---+---+---+---+---+---+
     |               n               |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 2

Do zawartości akumulatora dodaje się argument bezpośredni; wynik wpisuje się do akumulatora; aą ustawiane znacznik C i AC.


ADDC A,Rr

Operacja: A=A+Rr+C gdzie r=0...7

Kod: +---+---+---+---+---+---+---+---+                  78-7Fh
     | 0 | 1 | 1 | 1 | 1 |r2 |r1 |r0 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Do zawartości akumulatora dodaje się zawartość znacznika przeniesienia C, a następnie zawartość rejestru z ustawionego w danej chwili zbioru; wynik wpisuje się do akumulatora; aą ustawiane znacznik C i AC.


ADDC A,@Ri

Operacja: A=A+(Ri)+C gdzie i=0,1

Kod: +---+---+---+---+---+---+---+---+                  70,71h
     | 0 | 1 | 1 | 1 | 0 | 0 | 0 | i |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Do zawartości akumulatora dodaje się zawartość znacznika przeniesienia C, a następnie zawartość komórki wewnętrznej pamięci danych o adresie zawartym w rejestrze R0 lub R1 z ustawionego w danej chwili zbioru; wynik wpisuje się do akumulatora; aą ustawiane znacznik C i AC.


ADDC A,#n

Operacja: A=A+n+C

Kod: +---+---+---+---+---+---+---+---+                  13h
     | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 |
     +---+---+---+---+---+---+---+---+
     |               n               |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 2

Do zawartości akumulatora dodaje się zawartość znacznika przeniesienia C, a następnie argument bezpośredni; wynik wpisuje się do akumulatora; aą ustawiane znacznik C i AC.


ANL A,Rr

Operacja: A=A And Rr gdzie r=0...7

Kod: +---+---+---+---+---+---+---+---+                  58-5Fh
     | 0 | 1 | 0 | 1 | 1 |r2 |r1 |r0 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Zawartość akumulatora jest mnożona logicznie (bit po bicie) prrzez zawartość rejestru z ustawionego w danej chwili zbioru; wynik jest wpisywany do akumulatora.


ANL A,@Ri

Operacja: A=A And (Ri) gdzie i=0,1

Kod: +---+---+---+---+---+---+---+---+                  50,51h
     | 0 | 1 | 0 | 1 | 0 | 0 | 0 | i |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Zawartość akumulatora jest mnożona logicznie (bit po bicie) prrzez zawartość komórki wewnętrznej pamięci danych o adresie zawartym w rejestrze R0 lub R1 z ustawionego w danej chwili zbioru; wynik wpisuje się do akumulatora.


ANL A,#n

Operacja: A=A And n

Kod: +---+---+---+---+---+---+---+---+                  53h
     | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 |
     +---+---+---+---+---+---+---+---+
     |               n               |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 2

Zawartość akumulatora jest mnożona logicznie (bit po bicie) prrzez argument bezpośredni; wynik wpisuje się do akumulatora.


ANL BUS,#n

Operacja: BUS=BUS And n

Kod: +---+---+---+---+---+---+---+---+                  98h
     | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 |
     +---+---+---+---+---+---+---+---+
     |               n               |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 2

Dane z portu BUS są mnożone logicznie (bit po bice) przez argument bezpośredni; wynik jest przesyłany do portu BUS. Rozkaz może być umieszczony tylko w wewnętrznej pamięci programu - parz opis rozkazu OUTL BUS,A


ANL Pp,#n
Uwaga! nie ma w 8020, 8021, 8022

Operacja: Pp=Pp And n gdzie p=1,2

Kod: +---+---+---+---+---+---+---+---+                  98-9Ah
     | 1 | 0 | 0 | 1 | 1 | 0 |p1 |p0 |
     +---+---+---+---+---+---+---+---+
     |               n               |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 2

Dane z portu P1 lub P2 są mnożone logicznie (bit po bice) przez argument bezpośredni; wynik jest przesyłany odpowiednio do portu P1 lub P2.


ANLD Pe,A

Operacja: Pe=Pe And A0-3 gdzie e=4...7

Kod: +---+---+---+---+---+---+---+---+                  9C-9Fh
     | 1 | 0 | 0 | 1 | 1 | 1 |e1 |e0 |
     +---+---+---+---+---+---+---+---+

        e1 e0=00-P4
        e1 e0=01-P5
        e1 e0=10-P6
        e1 e0=11-P7

Liczba cykli: 2

Dane z 4-bitowego portu Pe ekspandera 8243 są mnożone logicznie (bit po bicie) przez zawartość akumulatora (bity 0-3); wynik jest przesyłany do portu Pe.


CALL adr

Operacja:
(SP*2+8)=PC7-0
(SP*2+9)=PSW7-4,PC11-8
SP=SP+1
PC10-0=adr
PC11=DBF

Kod: +---+---+---+---+---+---+---+---+                  
     |a10|a9 |a8 | 1 | 0 | 1 | 0 | 0 |
     +---+---+---+---+---+---+---+---+          strona  kod hex
     |a7            ...           a0 |          0       14
     +---+---+---+---+---+---+---+---+          1       34
                                                2       54
                                                3       74
                                                4       94
                                                5       B4
                                                6       D4
                                                7       F4

Liczba cykli: 2

Zawartość licznika rozkazów i bity od 4 do 7 słowa stanu są ładowane na stos. Wartość wskaźnika stosu (PSW3-0) jest zwiększana o 1, a do licznika rozkazów wpisuje się adres podany w rozkazie (adres bezpośredni 10-bitowy). Do najbardziej znaczącego bitu licznika rozkazow PC11 przepisuje się wskaźnik tomu DBF, ustawiony ostatnim wykonanym rozkazem SEL MB. Rozkaz CALL umożliwja skoki w obrębie ustawionego tomu, a w połączeniu z sozkazem SEL MB - skok do dowolnego miejsca w pamięci.


CLR A

Operacja: A=0

Kod: +---+---+---+---+---+---+---+---+                  27h
     | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Zerowana jest zawartość akumulatora.


CLR C

Operacja: C=0

Kod: +---+---+---+---+---+---+---+---+                  97h
     | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Zerowana jest znacznik przeniesienia C.


CLR F0
Uwaga! nie ma w 8020, 8021, 8022

Operacja: F0=0

Kod: +---+---+---+---+---+---+---+---+                  85h
     | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Zerowany jest znacznik programowy F0.


CLR F1
Uwaga! nie ma w 8020, 8021, 8022

Operacja: F1=0

Kod: +---+---+---+---+---+---+---+---+                  A5h
     | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Zerowany jest znacznik programowy F1.


CPL A

Operacja: A=/A

Kod: +---+---+---+---+---+---+---+---+                  37h
     | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Negawana jest (bit po bicie) zawartość akumulatora. Zmiana znaku zawartej w akumulatorze liczby w kodzie U2 jest możliwa jedynie przy pomocy tego rozkazu. Służy do tego następująca sekwencja:
CPL A
INC A


CPL C

Operacja: C=/C

Kod: +---+---+---+---+---+---+---+---+                  A7h
     | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Negawana jest znacznik przeniesiena C.


CPL F0
Uwaga! nie ma w 8020, 8021, 8022

Operacja: F0=/F0

Kod: +---+---+---+---+---+---+---+---+                  95h
     | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Negawany jest stan znacznika roboczego F0. Sekwencja:
CLR F0
CPL F0

daje jedyną nożliwość ustawienia znacznika w stan 1.


CPL F1
Uwaga! nie ma w 8020, 8021, 8022

Operacja: F1=/F1

Kod: +---+---+---+---+---+---+---+---+                  B5h
     | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Negawany jest stan znacznika roboczego F1. Sekwencja:
CLR F1
CPL F1

daje jedyną nożliwość ustawienia znacznika w stan 1.


DA A
Kod: +---+---+---+---+---+---+---+---+                  57h
     | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Wykonuje się korekcja dziesiętna wyniku dodawania, sprowadzająca go do postaci dwóch cyfr dziesiętnych (kod BCD) - o ile argumenty były w kodzie BCD; jest ustawiany znacznik przeniesienia C.

Korekcja przebiega następująco: jeśli zawartość bitów od 0 do 3 akumulatora jest większa niż 9 lubjest ustawiony znacznik AC, to zawartość bitów od 4 do 7 akumulatora dodaje sięliczba 6, po czym jeśli zawartość bitów od 4 do 7 jest większa niż 9 lubjest ustawiony znacznik C,to do tej zawartości dodaje się liczba 6. Jeżeli w czasie twjostatniej operacji wystąpiło przeniesienie, to do znacznika C jest wpisywana jedynka; w przeciwnymrazie stan znacznika nie zmienia się.

Rozkaz DA A powinien być użyty wyłącznie w połączeniu z rozkazem dodawiania. Równierz zliczanie w kodzie BCD powinno być wykonywane za pomocą dodawania, na przyklad:
ADD A,#1
DA A

a nie za pomocą rozkazuINC, ktorego wykonanie nie powoduje ustawienia znaczników.


DEC A

Operacja: A=A-1

Kod: +---+---+---+---+---+---+---+---+                  07h
     | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Od zawartości akumulatora odejmuje się jedynka; stan znaczników AC i C nie zmienia się.


DEC Rr

Operacja: Rr=Rr-1 gdzie r=0...7

Kod: +---+---+---+---+---+---+---+---+                  C8-CFh
     | 1 | 1 | 0 | 0 | 1 | R2| R1| R0|
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Od zawartości rejestru Rr z ustawionego w danej chwili zbioru odejmuje się jedynka.


DIS I
Uwaga! nie ma w 8020, 8021
Kod: +---+---+---+---+---+---+---+---+                  15h
     | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Przerwania zewnętrzne zostają zablokowane. Po wykonaniu tego rozkazu zgłoszenia przerwań (stan niski na wejściu /INT) nie będą przyjmowane aż do chwili odblokowania przerwań rozkazem EN I.


DIS TCNT1
Uwaga! nie ma w 8020, 8021
Kod: +---+---+---+---+---+---+---+---+                  35h
     | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Przerwania wewnętrzne z ukladu czasowo-licznikowego zostają zablokowane. Po wykonaniu tego rozkazu zgłoszenia przerwania - przepełnienia licznika -będzie ignorowane (nie będzie też zapamiętane). Przyjęte zostanie dopiero pierwsze zgłoszenie po otwarciu przerwań rozkazem En TCNT1.


DJNZ adr

Operacja:
Rr=Rr-1 gdzie r=0...7
Jeżeli Rr<>0, to PC70=adr, w przeciwnym razie PC=PC+2

Kod: +---+---+---+---+---+---+---+---+                  E8-EFh
     | 1 | 1 | 1 | 0 | 1 | R2| R1| R0|
     +---+---+---+---+---+---+---+---+
     |a7            ...           a0 |          
     +---+---+---+---+---+---+---+---+          

Liczba cykli: 2

Zawartość rejestru Rr z ustawionego w danej chwili zbioru jest zmniejszana o 1. Jeżeli jest ona różna od zera, to do bitów od 0 do 7 licznika rozkazów wpisuje się adres bezpośredni (bity od 8 do 12 nie zmieniają się) i zostaje wykonany skok do adresu na stronie bieżącej. Jeżeli po zmniejszeniu zawartość rejestru jest zerowa,to skok nie wykonuje się - jako następny jest realizowany rozkaz umieszczony bezpośredniu po DJNZ.


EN TCNT1
Uwaga! nie ma w 8020, 8021
Kod: +---+---+---+---+---+---+---+---+                  25h
     | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Przerwania wewnętrzne z układu czasowo-licznikowego zostają odblokowane. Po wykonaniu tego rozkazu zgłoszenie przerwania (przepełnienie licznika) zostaje przyjęte - wykona się skok do podprogramu obsługi, pod adres 7.


ENT0 CLK
Uwaga! nie ma w 8020, 8021, 8022
Kod: +---+---+---+---+---+---+---+---+                  75h
     | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Zdefiniowana zostaje funkcja koncówki T0 jako wyjścia sygnału zegarowego o częstotliwości Fxtal/3. Jest ona kasowana jedynie w wyniku wyzerowania mikrokontrolera.


IDL
Uwaga! nie dotyczy układów CHMOS
Kod: +---+---+---+---+---+---+---+---+                  01h
     | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Ustawia się tryb pracy jałowejk mikrokontalera. Wyjście z tego trybu nastąpi po przyjęciu przerwania lub wyzerowania układu.


IN A,Pp

Operacja: A=Pp gdzie p=1,2

Kod: +---+---+---+---+---+---+---+---+                  09-0Ah
     | 0 | 0 | 0 | 0 | 1 | 0 | P1| P0|
     +---+---+---+---+---+---+---+---+
     |a7            ...           a0 |          
     +---+---+---+---+---+---+---+---+          

Liczba cykli: 2

Dane z portu P1 lub P2 są przesyłane (odczytywane) do akumulatora. W przypadku układu 8021 dane z portu P2 wpisują się na bity A0-3; bity A7-4 są zerowane.


INC A

Operacja: A=A+1

Kod: +---+---+---+---+---+---+---+---+                  17h
     | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Do zawartości akumulatora dodaje się jedynka; stan znaczników AC i C nie zmienia się.


INC Rr

Operacja: Rr=Rr+1 gdzie r=0...7

Kod: +---+---+---+---+---+---+---+---+                  18-1Fh
     | 0 | 0 | 0 | 1 | 1 | R2| R1| R0|
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Do zawartości rejestru Rr z ustawionego w danej chwili zbioru dodaje się jedynka.


INC @Rr

Operacja: (Ri)=(Rr)+1 gdzie i=0,1

Kod: +---+---+---+---+---+---+---+---+                  10,11h
     | 0 | 0 | 0 | 1 | 0 | 0 | 0 | i |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Do zawartości komórki pamięci danych, o adresie zawartym w rejestrze R0 lub R1 z ustawionego w danej chwili zbioru, dodaje się jedynka.


IN A,P0

Uwaga!
Dotyczy tylko 8020, 8021, 8022
Podobnie jak w przypadku INS A,BUS nie jest wysyłany impuls /RD

IN A,BUS
Uwaga!
dotyczy pozostałych procesorów

Operacja: A=BUS

Kod: +---+---+---+---+---+---+---+---+                  08h
     | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 2

Dane z portu BUS są przesylane (odczytywane) do akumulatora; odczytywanie danych jest strobowane impulsem /RD.


JBb adr
Uwaga! nie ma w 8020, 8021, 8022

Operacja:
Jeżeli Ab=1 (B=0-7),to PC7-0=adr; w przeciwnym razie PC=PC+2

Kod: +---+---+---+---+---+---+---+---+                  
     | b2| b1| b0| 1 | 0 | 0 | 1 | 0 |          kod hex
     +---+---+---+---+---+---+---+---+          nr bitu A       B2B1B0     
     |a7            ...           a0 |          0               0 0 0           12
     +---+---+---+---+---+---+---+---+          1               0 0 1           32
                                                2               0 1 0           52
                                                3               0 1 1           72
                                                4               1 0 0           92
                                                5               1 0 1           B2
                                                6               1 1 0           D2
                                                7               1 1 1           F2

Liczba cykli: 2

Jeżeli wyszczegulniony w rozkazie bit akumulatora jest jedynką, to wykonuje się skok pod 8-bitowy adres bezpośredni (na stronie bieżącej).


JC adr

Operacja:
Jeżeli C=1, to PC7-0=adr; w przeciwnym razie PC=PC+2

Kod: +---+---+---+---+---+---+---+---+                  
     | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 |
     +---+---+---+---+---+---+---+---+                  F6h
     |a7            ...           a0 |          
     +---+---+---+---+---+---+---+---+          

Liczba cykli: 2

Jeżeli jest ustawiony znacznik przeniesienia (C=1), to wykonuje się skok pod 8-bitowy adres bezpośredni (na stronie bieżącej).


JF0 adr
Uwaga! nie ma w 8020, 8021, 8022

Operacja:
Jeżeli F0=1, to PC7-0=adr; w przeciwnym razie PC=PC+2

Kod: +---+---+---+---+---+---+---+---+                  
     | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 |
     +---+---+---+---+---+---+---+---+                  B6h
     |a7            ...           a0 |          
     +---+---+---+---+---+---+---+---+          

Liczba cykli: 2

Jeżeli jest ustawiony znacznik programowy F0, to wykonuje się skok pod 8-bitowy adres bezpośredni (na stronie bieżącej).


JF1 adr
Uwaga! nie ma w 8020, 8021, 8022

Operacja:
Jeżeli F1=1, to PC7-0=adr; w przeciwnym razie PC=PC+2

Kod: +---+---+---+---+---+---+---+---+                  
     | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 |
     +---+---+---+---+---+---+---+---+                  76h
     |a7            ...           a0 |          
     +---+---+---+---+---+---+---+---+          

Liczba cykli: 2

Jeżeli jest ustawiony znacznik programowy F1, to wykonuje się skok pod 8-bitowy adres bezpośredni (na stronie bieżącej).


JMP adr

Operacja:
PC10-0=adr i PC11=DBF

Kod: +---+---+---+---+---+---+---+---+                  
     |a10| a9| a8| 0 | 0 | 1 | 0 | 0 |
     +---+---+---+---+---+---+---+---+         strona  kod hex
     |a7            ...           a0 |          0       04
     +---+---+---+---+---+---+---+---+          1       24
                                                2       44
                                                3       64
                                                4       84
                                                5       A4
                                                6       C4
                                                7       E4                  

Liczba cykli: 2

Do licznika rozkazów (bity od 0 do 10) wpisuje się podany w rozkazie 11-bitowy adres bezpośredni. Do najbardziej znaczącego bitu licznika rozkazów PC11 przepisuje się zawartość wskaźnika tomu DBF, ustawionego na ostatnio wykonanym rozkazem SEL MB. Rizkaz JMP umożliwia skoki w obrębie ustawionego tomu, a w sekwencji z zrokazem SEL MB do dowolnego miejsca w pamięci.


JMPP @A

Operacja:
PC7-0=(A)

Kod: +---+---+---+---+---+---+---+---+                  
     | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
     +---+---+---+---+---+---+---+---+                  B3h      
     |a7            ...           a0 |         
     +---+---+---+---+---+---+---+---+                           

Liczba cykli: 2

Wykonywane jest skok bezwarunkowy pod 8-bitowy adres (na stronie bieżącaj) zawarty w komórce pamięci programu, której adres (równierz na stronie bieżącej) jest umieszczony w akumulatorze.


JNC adr

Operacja:
Jeżeli C=0, to PC7-0=adr; w przeciwnym razie PC=PC+2

Kod: +---+---+---+---+---+---+---+---+                  
     | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
     +---+---+---+---+---+---+---+---+                  E6h
     |a7            ...           a0 |          
     +---+---+---+---+---+---+---+---+          

Liczba cykli: 2

Jeżeli nie jest ustawiony znacznik przeniesienia (C=0), to wykonuje się skok pod 8-bitowy adres bezpośredni (na stronie bieżącej).


JNI adr
Uwaga! nie ma w 8020, 8021, 8022

Operacja:
Jeżeli INT=0, to PC7-0=adr; w przeciwnym razie PC=PC+2

Kod: +---+---+---+---+---+---+---+---+                  
     | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
     +---+---+---+---+---+---+---+---+                  86h
     |a7            ...           a0 |          
     +---+---+---+---+---+---+---+---+          

Liczba cykli: 2

Jeżeli na wejściu przerywającym INT jest stan niski (INT=0), to wykonuje się skok pod 8-bitowy adres bezpośredni (na stronie bieżącej). W tensposób równierz przy zablokowanym systemie przerwań może być sprawdzony stan wejścia przerywającego.


JNT0 adr
Uwaga! nie ma w 8020, 8021

Operacja:
Jeżeli T0=0, to PC7-0=adr; w przeciwnym razie PC=PC+2

Kod: +---+---+---+---+---+---+---+---+                  
     | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 |
     +---+---+---+---+---+---+---+---+                  26h
     |a7            ...           a0 |          
     +---+---+---+---+---+---+---+---+          

Liczba cykli: 2

Jeżeli na wejściu T0 jest stan niski (T0=0), to wykonuje się skok pod 8-bitowy adres bezpośredni (na stronie bieżącej). Po zdefiniowaniu końcówki T0 jako wyjścia sygnału zegarowego (rozkazem ENT0 CLK) wynik wykonania rozkazu będzie przypadkowy


JNT1 adr
Uwaga! nie ma w 8020, 8021

Operacja:
Jeżeli T1=0, to PC7-0=adr; w przeciwnym razie PC=PC+2

Kod: +---+---+---+---+---+---+---+---+                  
     | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 |
     +---+---+---+---+---+---+---+---+                  46h
     |a7            ...           a0 |          
     +---+---+---+---+---+---+---+---+          

Liczba cykli: 2

Jeżeli na wejściu T1 jest stan niski (T1=0), to wykonuje się skok pod 8-bitowy adres bezpośredni (na stronie bieżącej)


JNZ adr

Operacja:
Jeżeli A<>0, to PC7-0=adr; w przeciwnym razie PC=PC+2

Kod: +---+---+---+---+---+---+---+---+                  
     | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 |
     +---+---+---+---+---+---+---+---+                  96h
     |a7            ...           a0 |          
     +---+---+---+---+---+---+---+---+          

Liczba cykli: 2

Jeżeli zawartość akumulatora jest niezerowa, to wykonuje się skok pod 8-bitowy adres bezpośredni (na stronie bieżącej)


JTF adr
Uwaga! nie ma w 8020, 8021

Operacja:
Jeżeli TF=1, to PC7-0=adr i TF=0; w przeciwnym razie PC=PC+2

Kod: +---+---+---+---+---+---+---+---+                  
     | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 |
     +---+---+---+---+---+---+---+---+                  16h
     |a7            ...           a0 |          
     +---+---+---+---+---+---+---+---+          

Liczba cykli: 2

Jeżeli został ustawiony znacznimk TF, czyli nastąpiło przepełnienie licznika w układzie czasowo-licznikowym, to wykonuje się skok pod 8-bitowy adres bezpośredni (na stronie bieżącej). Następuje wyzerowanie znacznika TF. Wykonanie rozkazu jest jedynym sposobem programoego zerowania zmacznika TF.


JT0 adr
Uwaga! nie ma w 8020, 8021

Operacja:
Jeżeli T0=1, to PC7-0=adr; w przeciwnym razie PC=PC+2

Kod: +---+---+---+---+---+---+---+---+                  
     | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 |
     +---+---+---+---+---+---+---+---+                  36h
     |a7            ...           a0 |          
     +---+---+---+---+---+---+---+---+          

Liczba cykli: 2

Jeżeli na wejściu T0 jest stan wysoki (T0=1), to wykonuje się skok pod 8-bitowy adres bezpośredni (na stronie bieżącej). Po zdefiniowaniu końcówki T0 jako wyjścia sygnału zegarowego (rozkazem ENT0 CLK) wynik wykonania rozkazu będzie przypadkowy


JT1 adr
Uwaga! nie ma w 8020, 8021

Operacja:
Jeżeli T1=1, to PC7-0=adr; w przeciwnym razie PC=PC+2

Kod: +---+---+---+---+---+---+---+---+                  
     | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 |
     +---+---+---+---+---+---+---+---+                  56h
     |a7            ...           a0 |          
     +---+---+---+---+---+---+---+---+          

Liczba cykli: 2

Jeżeli na wejściu T1 jest stan wysoki (T1=1), to wykonuje się skok pod 8-bitowy adres bezpośredni (na stronie bieżącej)


JZ adr

Operacja:
Jeżeli A=0, to PC7-0=adr; w przeciwnym razie PC=PC+2

Kod: +---+---+---+---+---+---+---+---+                  
     | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 |
     +---+---+---+---+---+---+---+---+                  C6h
     |a7            ...           a0 |          
     +---+---+---+---+---+---+---+---+          

Liczba cykli: 2

Jeżeli zawartość akumulatora jest równa zeru, to wykonuje się skok pod 8-bitowy adres bezpośredni (na stronie bieżącej)


MOV A,#n

Operacja:
A=n

Kod: +---+---+---+---+---+---+---+---+                  
     | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 |
     +---+---+---+---+---+---+---+---+                  23h
     |            <--n-->            |          
     +---+---+---+---+---+---+---+---+          

Liczba cykli: 2

Do akumulatora wpisuje się 8-bitowy argument bezpośredni.


MOV A,PSW
Uwaga! nie ma w 8020, 8021, 8022

Operacja:
A=PSW

Kod: +---+---+---+---+---+---+---+---+                  
     | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 |
     +---+---+---+---+---+---+---+---+                  C7h

Liczba cykli: 1

Do akumulatora wpisuje się zawartość słowa stanu programu (PSW).


MOV A,Rr

Operacja:
A=Rr gdzie r=0...7

Kod: +---+---+---+---+---+---+---+---+                  
     | 1 | 1 | 1 | 1 | 0 | R2| R1| R0|
     +---+---+---+---+---+---+---+---+                  F8-FFh

Liczba cykli: 1

Do akumulatora wpisuje się zawartość rejestru Rr z ustawionego w danej chwili zbioru.


MOV A,@Ri

Operacja:
A=(Ri) gdzie r=0,1

Kod: +---+---+---+---+---+---+---+---+                  
     | 1 | 1 | 1 | 1 | 0 | 0 | 0 | i |
     +---+---+---+---+---+---+---+---+                  F0,F1h

Liczba cykli: 1

Do akumulatora wpisuje się zawartość komórki wewnętrznej pamięci danych, o adresie zawartum w rejestrze R0 lub R1 z ustawionego w danej chwili zbioru.


MOV A,T

Operacja:
A=T

Kod: +---+---+---+---+---+---+---+---+                  
     | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
     +---+---+---+---+---+---+---+---+                  42h

Liczba cykli: 1

Do akumulatora wpisuje się zawartość licznika z układu czasowo-licznikowego.


MOV PSW,A

Operacja:
PSW=A

Kod: +---+---+---+---+---+---+---+---+                  
     | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 |
     +---+---+---+---+---+---+---+---+                  D7h

Liczba cykli: 1

Zawartość akumulatora jest wpisywana do słowa stanu programu (PSW); następuje zmiana stanu znaczników C, AC, F0, BS oraz wskaźnik stosu SP (zgodnie z zawartością akumulatora).


MOV Rr,A

Operacja:
Rr=A gdzie r=0...7

Kod: +---+---+---+---+---+---+---+---+                  
     | 1 | 0 | 1 | 0 | 1 | R2| R1| R0|
     +---+---+---+---+---+---+---+---+                  A8-AFh

Liczba cykli: 1

Zawartość akumulatora jest wpisywana do rejestru Rr z ustawionego w danej chwili zbioru.


MOV Rr,#n

Operacja:
Rr=n gdzie r=0...7

Kod: +---+---+---+---+---+---+---+---+                  
     | 1 | 0 | 1 | 1 | 1 | R2| R1| R0|
     +---+---+---+---+---+---+---+---+                  B8-BFh
     |            <--n-->            |
     +---+---+---+---+---+---+---+---+                  
         

Liczba cykli: 1

Do rejestru Rr z ustawionego w danej chwili zbioru wpisuje się 8-bitowy argument bezpośredni.


MOV @Ri,A

Operacja:
(Ri)=A gdzie i=0,1

Kod: +---+---+---+---+---+---+---+---+                  
     | 1 | 0 | 1 | 0 | 0 | 0 | 0 | i |
     +---+---+---+---+---+---+---+---+                  A0-A1h

Liczba cykli: 1

Zawartość akumulatora jest wpisywana do komórki wewnętrznaj pamięci danych, o adresie zawartym w rejestrze R0 lub R1 z ustawionego w danej chwili zbioru.


MOV @Ri,#n

Operacja:
(Ri)=n gdzie i=0,1

Kod: +---+---+---+---+---+---+---+---+                  
     | 1 | 0 | 1 | 1 | 0 | 0 | 0 | i |
     +---+---+---+---+---+---+---+---+                  B0-B1h
     |            <--n-->            |
     +---+---+---+---+---+---+---+---+                  

Liczba cykli: 2

Do komórki wewnętrznaj pamięci danych, o adresie zawartym w rejestrze R0 lub R1 z ustawionego w danej chwili zbioru, wpisuje się 8-bitowy argument bezpośredni.


MOV T,A

Operacja:
T=A gdzie

Kod: +---+---+---+---+---+---+---+---+                  
     | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 |
     +---+---+---+---+---+---+---+---+                  62h

Liczba cykli: 1

Zawartość akumulatora jest wpisywana do licznika z układu czasowo-licznikowego. Jest to możliwe w każdym stanie układu i nie zakłuca liczenia.


MOVD A,Pe

Operacja: A0-3=Pe A4-7=0 gdzie e=4...7

Kod: +---+---+---+---+---+---+---+---+                  0C-0Fh
     | 0 | 0 | 0 | 0 | 1 | 1 |e1 |e0 |
     +---+---+---+---+---+---+---+---+

        e1 e0=00-P4
        e1 e0=01-P5
        e1 e0=10-P6
        e1 e0=11-P7

Liczba cykli: 2

Dane z 4-bitowego portu Pe ekspandera 8243 są przesylane (odczytywane) do akumulatora (na bity 0-3). Bity 4-7 akumulatora są zerowane.


MOVD Pe,A

Operacja: Pe=A0-3 gdzie e=4...7

Kod: +---+---+---+---+---+---+---+---+                  3C-3Fh
     | 0 | 0 | 1 | 1 | 1 | 1 |e1 |e0 |
     +---+---+---+---+---+---+---+---+

        e1 e0=00-P4
        e1 e0=01-P5
        e1 e0=10-P6
        e1 e0=11-P7

Liczba cykli: 2

Dane z bitów 0-3 są przesyłane do 4-bitowego portu Pe ekspandera 8243; zawartość bitów 4-7). jest bez znaczenia.


MOV A,@A

Operacja:
A=A(PC11-8)

Kod: +---+---+---+---+---+---+---+---+                  
     | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 |
     +---+---+---+---+---+---+---+---+                  A3h

Liczba cykli: 2

Do akumulatora wpisuje się zawartość komórki pamięci programu - ze strony bieżącej - o 8-bitowym adresie (na stronie) znajdującym się w akumulatorze. Numer strony jest wyznaczony przez bardziej znaczące bity licznika rozkazów po pobraniu tego rozkazu. Oznacza to, że jeśli rozkaz MOVP jest umieszczony na danej stronie pod adresem 255 (ostatnia komórka strony), to zawarty w akumulatorze adres dotycz strony następnej.


MOVP3 A,@A
Uwaga! nie ma w 8020, 8021, 8022

Operacja:
A=A (0011.A)

Kod: +---+---+---+---+---+---+---+---+                  
     | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 |
     +---+---+---+---+---+---+---+---+                  E3h

Liczba cykli: 2

Do akumulatora wpisuje się zawartość komórki pamięci programu - ze strony trzeciej - o 8-bitowym adresie (na stronie) znajdującym się w akumulatorze.


MOVX A,@Ri
Uwaga! nie ma w 8020, 8021, 8022

Operacja:
A=(Ri)

Kod: +---+---+---+---+---+---+---+---+                  
     | 1 | 0 | 0 | 0 | 0 | 0 | 0 | i |
     +---+---+---+---+---+---+---+---+                  80,81h

Liczba cykli: 2

Do akumulatora wpisuje się zawartość komórki zewnętrznej pamięci danych, o adresie zawartym w R0 lub R1 z ustawionego w danej chwili zbioru. Na wyjście /RD generuje się impuls, będący sygnałem sterowania odczytem.


MOVX @Ri,A
Uwaga! nie ma w 8020, 8021, 8022

Operacja:
A=A (Ri)

Kod: +---+---+---+---+---+---+---+---+                  
     | 1 | 0 | 0 | 0 | 0 | 0 | 0 | i |
     +---+---+---+---+---+---+---+---+                  90,91h

Liczba cykli: 2

Zawartość akumulatora jest wpisywane do komórki zewnętrznej pamięci danych, o adresie zawartym w R0 lub R1 z ustawionego w danej chwili zbioru. Na wyjściu /WR generuje się impuls, będący sygnałem sterowania zapisem.


NOP

Operacja:
A=A (Ri)

Kod: +---+---+---+---+---+---+---+---+                  
     | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
     +---+---+---+---+---+---+---+---+                  00h

Liczba cykli: 2

Nie wykonuje się żadna operacja.


ORL A,Rr

Operacja:
A=A Or Rr gdzie r=0...7

Kod: +---+---+---+---+---+---+---+---+                  
     | 0 | 1 | 0 | 0 | 0 | R2| R1| R0|
     +---+---+---+---+---+---+---+---+                  48-4Fh

Liczba cykli: 1

Zawartość akumulatora jest sumowana logiczni (bit po bicie) z zawartością rejestru z ustawionego w danej chwili zbioru. Wynik jest wpisywany do akumulatora.


ORL A,@Ri

Operacja:
A=A Or @Ri gdzie i=0,1

Kod: +---+---+---+---+---+---+---+---+                  
     | 0 | 1 | 0 | 0 | 0 | 0 | 0 | i |
     +---+---+---+---+---+---+---+---+                  40-41h

Liczba cykli: 1

Zawartość akumulatora jest sumowana logiczni (bit po bicie) z zawartością komórki wewnętrznej pamięci danych, o adresie zawartym w rejestrze R0 lub R1 z ustawionego w danej chwili zbioru. Wynik jest wpisywany do akumulatora.


ORL A,#n

Operacja:
A=A Or n

Kod: +---+---+---+---+---+---+---+---+                  
     | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 |
     +---+---+---+---+---+---+---+---+                  43h
     |            <--n-->            |
     +---+---+---+---+---+---+---+---+                  

Liczba cykli: 2

Zawartość akumulatora jest sumowana logiczni (bit po bicie) z argumentem bezpośrednim. Wynik jest wpisywany do akumulatora.


ORL BUS,#n
Uwaga! nie ma w 8020, 8021, 8022

Operacja: BUS=BUS Or n

Kod: +---+---+---+---+---+---+---+---+                  88h
     | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
     +---+---+---+---+---+---+---+---+
     |               n               |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 2

Dane z portu BUS są sumowane logicznie (bit po bice) przez argument bezpośredni; wynik jest przesyłany do portu BUS. Rozkaz może być umieszczony tylko w wewnętrznej pamięci programu - parz opis rozkazu OUTL BUS,A


ORL Pp,#n
Uwaga! nie ma w 8020, 8021, 8022

Operacja: Pp=Pp Or n gdzie p=1,2

Kod: +---+---+---+---+---+---+---+---+                  89-8Ah
     | 1 | 0 | 0 | 0 | 1 | 0 |p1 |p0 |
     +---+---+---+---+---+---+---+---+
     |            <--n-->            |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 2

Dane z portu P1 lub P2 są sumowane logicznie (bit po bice) przez argument bezpośredni; wynik jest przesyłany odpowiednio do portu P1 lub P2.


ORLD Pe,A

Operacja: Pe=Pe Or A0-3 gdzie e=4...7

Kod: +---+---+---+---+---+---+---+---+                  8C-8Fh
     | 1 | 0 | 0 | 0 | 1 | 1 |e1 |e0 |
     +---+---+---+---+---+---+---+---+

        e1 e0=00-P4
        e1 e0=01-P5
        e1 e0=10-P6
        e1 e0=11-P7

Liczba cykli: 2

Dane z 4-bitowego portu Pe ekspandera 8243 są sumowane logicznie (bit po bicie) przez zawartość akumulatora (bity 0-3); wynik jest przesyłany do portu Pe.


OUTL BUS,A
Uwaga! nie ma w 8020, 8021, 8022

Operacja: BUS=A

Kod: +---+---+---+---+---+---+---+---+                  02h
     | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 2

Dane z akumulatora są przesyłane do portu BUS i zapisywane w rejestrze wyjściowym. Na wyjściu /WR jest generowany impuls.Rozkazy zapisujące dane do portu BUS (OUTL,ORL, ANL) mogą być umieszczane tylko w wewnętrznej pamięci programu i nie powinny być używane w systemach z zewnętrzną pamięcią programu. dane zapisane doportu BUS są niszczone również w wyniku wykonania rozkazów przesłań dozewnętrznej pamięci danych (MOVX).


OUTL P0,A

Operacja: P0=A

Kod: +---+---+---+---+---+---+---+---+                  90h
     | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 2

Dane z akumulatora są przesyłane do portu P0 i zapisywane w rejestrze wyjściowym.


OUTL Pp,A

Operacja: Pp=A gdzie p=1,2

Kod: +---+---+---+---+---+---+---+---+                  39-3Ah
     | 0 | 0 | 1 | 1 | 1 | 0 | p1| p0|
     +---+---+---+---+---+---+---+---+
        p1 p0=01 dla P1
        p1 p0=10 dla P2

Liczba cykli: 2

Dane z akumulatora są przesyłane do portu P1 lub P2 i zapisywane w rejestrze wyjściowym.


RAD
Uwaga! dotyczy tylko 8022

Operacja: A=CRR

Kod: +---+---+---+---+---+---+---+---+                  80h
     | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 2

Dane z akumulatora wpisuje się zawartość rejestru przetwornika A/C (wynik przetworzenia).


RET

Operacja:
SP=SP-1
PC7-0=(SP*2+8)
PC11-8=(SP*2+9)3-0

Kod: +---+---+---+---+---+---+---+---+                  83h
     | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 2

Wskaźnik stosu (PSW3-0) jest zmniejszony o 1. Ze stosu do licznika rozkazów przepisuje się adres powrotu (pełny 12-bitowy). Nie są odtwarzane bity od 4 do 7 słowa stanu,zapisane na stosie przy wykonaniu rozkazu CALL.


RETI
Uwaga! dotyczy tylko 8022

Operacja:
SP=SP-1
PC=(SP)+1

Kod: +---+---+---+---+---+---+---+---+                  93h
     | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 2

Wskaźnik stosu jest zmniejszony o 1. Ze stosu do licznika rozkazów przepisuje się adres powrotu. Zostaje włączony system przerwań, zamknięty przy przyjęciu przerwania.


RETR
Uwaga! nie ma w 8020, 8021, 8022

Operacja:
SP=SP-1
PC7-0=(SP*2+8)
PC11-8=(SP*2+9)3-0
PSW7-4=(SP*2+9)7-4

Kod: +---+---+---+---+---+---+---+---+                  93h
     | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 2

Wskaźnik stosu (PSW3-0) jest zmniejszony o 1. Ze stosu do licznika rozkazów przepisuje się adres powrotu (pełny 12-bitowy). Odtwarzane są bity 4-7 słowa stanu, zapisane na stosie przy wykonaniu rozkazu CALL lub przyjęciu przerwania. Odblokowany przy przyjęciu przerwań, zablokowany przy przyjęciu przerwania.
Rozkaz RETR powinien być użtwany do powrotu z programu obsługi przerwania - jego wykonanie jest dla systemu przerwań sygnałem konca obsługi ostatnio przyjętego przerwania. nie powinien być on natomiast użty w podprogramie wywoływanym w przogramie obsługi przerwania.


RL A

Operacja:

Kod: +---+---+---+---+---+---+---+---+                  E7h
     | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Zawartość akumulatora jest przesówana cyklicznie w lewo o jeden bit, tzn. zawartość bitu 0 jest wpisywana od bitu 1, bitu 1 do 2,...bitu 7 do 0.


RLC A

Operacja:

Kod: +---+---+---+---+---+---+---+---+                  F3h
     | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Zawartość akumulatora jest przesówana cyklicznie w lewo o jeden bit. Zawartość bitu 7 jest wpisywana do znacznika C, którego z kolei zawartość jest wpisywana na pozycję 0 akumulatora. Wykonanie tego rozkazu przy zerowym C, np. w sekwencji:
CLR C
RLC A

odpowiada pomnożeniu przez 2 liczby (w naturalnym kodzie dwójkowym), znajdującej się w akumulatorze. Znacznik przeniesienia C ustawia się zgodnie z wynikiem operacji, co może być wykorzystane przy działaniu na liczbach kilkubajtowych.


RR A

Operacja:

Kod: +---+---+---+---+---+---+---+---+                  77h
     | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Zawartość akumulatora jest przesówana cyklicznie w prawao o jeden bit, tzn. zawartość bitu 7 jest wpisywana od bitu 6, bitu 6 do 5,...bitu 0 do 7.


RLC A

Operacja:

Kod: +---+---+---+---+---+---+---+---+                  63h
     | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Zawartość akumulatora jest przesówana cyklicznie w prawo o jeden bit. Zawartość bitu 0 jest wpisywana do znacznika C, którego z kolei zawartość jest wpisywana na pozycję 7 akumulatora. Wykonanie tego rozkazu przy zerowym C, np. w sekwencji:
CLR C
RRC A

odpowiada podzieleniu przez 2 liczby (w naturalnym kodzie dwójkowym), znajdującej się w akumulatorze. Znacznik przeniesienia C ustawia się zgodnie z wynikiem operacji, co może być wykorzystane przy działaniu na liczbach kilkubajtowych.


SEl AN0
Uwaga! dotyczy tylko 8022
Kod: +---+---+---+---+---+---+---+---+                  95h
     | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Do przetwornika A/C dołącza się wybrane wejście analogowe. Uruchamia się proces przetwarzania sygnału z tego właśnie wejścia. proces ten będzie przebiegał cyklicznie. Pierwszy wynik będzie gotowy do odczytania (rozkazem RAD) po czterech cyklach maszynowych. Wykonanie rozkazu w czasie przetwarzania spowoduje przerwanie bieżącego i rozpoczęcie nowego procesu przetwarzania.


SEl AN1
Uwaga! dotyczy tylko 8022
Kod: +---+---+---+---+---+---+---+---+                  85h
     | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Do przetwornika A/C dołącza się wybrane wejście analogowe. Uruchamia się proces przetwarzania sygnału z tego właśnie wejścia. proces ten będzie przebiegał cyklicznie. Pierwszy wynik będzie gotowy do odczytania (rozkazem RAD) po czterech cyklach maszynowych. Wykonanie rozkazu w czasie przetwarzania spowoduje przerwanie bieżącego i rozpoczęcie nowego procesu przetwarzania.


SEl MB0
Uwaga! nie ma w 8020, 8021, 8022

Operacja: DBF=0

Kod: +---+---+---+---+---+---+---+---+                  E5h
     | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Do wskaźnika tomu pamięci programu DBF wspisuej się zero. Podczas wykonywania najbliższego rozkazu JMP lub CALL zostanie wyzerowany bit 11 licznika rozkazów. Jeżeli nastąpi to w tomie 1, to wykona się skok między tomami. Wszystkie kolejne skoki będą wykonywane w ramach tomu 0 (adresy 0-2047).


SEl MB1
Uwaga! nie ma w 8020, 8021, 8022

Operacja: DBF=1

Kod: +---+---+---+---+---+---+---+---+                  F5
     | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Do wskaźnika tomu pamięci programu DBF wspisuej się jedynka. Podczas wykonywania najbliższego rozkazu JMP lub CALL zostanie ustawiony bit 11 licznika rozkazów. Jeżeli nastąpi to w tomie 0, to wykona się skok między tomami. Wszystkie kolejne skoki będą wykonywane w ramach tomu 1 (adresy 2048-4095).


SEl RB0
Uwaga! nie ma w 8020, 8021, 8022

Operacja: BS=0

Kod: +---+---+---+---+---+---+---+---+                  C5
     | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Do wskaźnika zbioru rejestrów BS (PSW4) wpisuje się zero. Wszystkie odwolania do rejestrów roboczych R0-R7 będą teraz dotyczyły zbioru 0 (wewnętrzna pamięć danych o adresach od 0 do 7).


SEl RB1
Uwaga! nie ma w 8020, 8021, 8022

Operacja: BS=1

Kod: +---+---+---+---+---+---+---+---+                  D5
     | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Do wskaźnika zbioru rejestrów BS (PSW4) wpisuje się jedynka. Wszystkie odwolania do rejestrów roboczych R0-R7 będą teraz dotyczyły zbioru 1 (wewnętrzna pamięć danych o adresach od 24 do 31). Wygodnie jest użwać pierwszego zbioru rejestrów w programch obsługi przerwania, drugiego w podprogramach. Wskaźnik BS wchodzi w skład słowa stanu, a zatem jest zapisywany na stosie w chwili przyjęcia przerwania lub skoku do podprogramu. Jest on odtwarzany przy powrocie, za pomocą rozkazu RETR.


STOP TCNT
Kod: +---+---+---+---+---+---+---+---+                  65
     | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Wstrzymana zostaje praca licznika w układzie czasowo-licznikowym, ii to zarówno w trybie licznika, jak i w trybie czasomierza.


STRT CNT
Kod: +---+---+---+---+---+---+---+---+                  45
     | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Układ czasowo-licznikowy rozpoczyna pracę jako licznikimpulsów zewnętrznych. Każda zmiana stanu z 1 na 0 na wejściu T1 (tylne zbocze sygnału) spowoduje zwiększenie zawartości licznika. Po wykonaniu rozkazu stanlicznika się nie zminia.


STRT T
Kod: +---+---+---+---+---+---+---+---+                  55
     | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Układ czasowo-licznikowy rozpoczyna pracę jako licznik wewnętrznych impulsów zegarowych, wyznaczających cykle maszynowe. Zawartość licznika zwiększa się co 32 cykle. Następuje wyzerowanie dzielnika przez 32 częstotliwości impulsów zegarowych - nie zminia się natomiast zawartość licznika.


SWAP A

Operacja: A(3-0)<=>(7-4)

Kod: +---+---+---+---+---+---+---+---+                  47
     | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Wymieniana jest zawartość bitów od 0 do 3 (mniej znaczący półbajt) i bitów od 4 do 7 (bardziej znaczący półbajt) akumulatora.


XCHP A,Rr

Operacja: ,<=>Rr gdzie r=0...7

Kod: +---+---+---+---+---+---+---+---+                  28-2F
     | 0 | 0 | 1 | 0 | 1 | R2| R1| R0|
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Zawartość akumulatora jest wymieniana z zawartością rejestru z ustawionego w danej chwili zbioru.


XCHP A,@Ri

Operacja: A<=>(Ri) gdzie i=0,1

Kod: +---+---+---+---+---+---+---+---+                  20-21
     | 0 | 0 | 1 | 0 | 0 | 0 | 0 | i |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Zawartość akumulatora jest wymieniana z zawartością komórki wewnętrznej pamięci danych, o adresie zawartym w rejestrze R0 lub R1 z ustawionego w danej chwili zbioru.


XCHD A,@Ri

Operacja: A(3-0)<=>(Ri)(3-0) gdzie i=0,1

Kod: +---+---+---+---+---+---+---+---+                  30-31
     | 0 | 0 | 1 | 1 | 0 | 0 | 0 | i |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Zawartość bitów od 0 do 3 (mniej znaczący półbajt) akumulatora jest wymieniana z zawartością bitów od 0 do 3 komórki wewnętrznej pamięci danych, o adresie zawartym w rejestrze R0 lub R1 z ustawionego w danej chwili zbioru. Bity 4-7 akumulatora oraz komórki pamięci pozostają bez zmian.


XRL A,Rr

Operacja: A=A Xor Rr gdzie r=0...7

Kod: +---+---+---+---+---+---+---+---+                  D8-DF
     | 1 | 1 | 0 | 1 | 1 | R2| R1| R0|
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Zawartość akumulatora jest sumowana mod 2 (bit po bicie) z zawartością rejestru z ustawionego w danej chwili zbioru. Wynik wpisuje się do akumulatora.


XRL A,@Ri

Operacja: A=A Xor (Ri) gdzie i=0,1

Kod: +---+---+---+---+---+---+---+---+                  D0-D1
     | 1 | 1 | 0 | 1 | 0 | 0 | 0 | i |
     +---+---+---+---+---+---+---+---+

Liczba cykli: 1

Zawartość akumulatora jest sumowana mod 2 (bit po bicie) z zawartością komórki wewnętrznej pamięci danych, o adresie zawartym w rejestrze R0 lub R1 z ustawionego w danej chwili zbioru. Wynik wpisuje się do akumulatora.


XRL A,#n

Operacja: A=A Xor n

Kod: +---+---+---+---+---+---+---+---+                  D3
     | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 |
     +---+---+---+---+---+---+---+---+
     |            <--n-->            |          
     +---+---+---+---+---+---+---+---+          

Liczba cykli: 2

Zawartość akumulatora jest sumowana mod 2 (bit po bicie) z argumentem bezpośrednim. Wynik wpisuje się do akumulatora.

Powrót