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:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
Operacja: A=0
Kod: +---+---+---+---+---+---+---+---+ 27h | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | +---+---+---+---+---+---+---+---+
Liczba cykli: 1
Zerowana jest zawartość akumulatora.
Operacja: C=0
Kod: +---+---+---+---+---+---+---+---+ 97h | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | +---+---+---+---+---+---+---+---+
Liczba cykli: 1
Zerowana jest znacznik przeniesienia C.
Operacja: F0=0
Kod: +---+---+---+---+---+---+---+---+ 85h | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | +---+---+---+---+---+---+---+---+
Liczba cykli: 1
Zerowany jest znacznik programowy F0.
Operacja: F1=0
Kod: +---+---+---+---+---+---+---+---+ A5h | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | +---+---+---+---+---+---+---+---+
Liczba cykli: 1
Zerowany jest znacznik programowy F1.
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
Operacja: C=/C
Kod: +---+---+---+---+---+---+---+---+ A7h | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | +---+---+---+---+---+---+---+---+
Liczba cykli: 1
Negawana jest znacznik przeniesiena C.
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.
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.
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.
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ę.
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.
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.
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.
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.
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.
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.
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.
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.
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ę.
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.
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,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.
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).
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).
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).
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).
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.
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.
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).
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.
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
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)
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)
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.
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
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)
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)
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.
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).
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Operacja:
A=A (Ri)
Kod: +---+---+---+---+---+---+---+---+ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +---+---+---+---+---+---+---+---+ 00h
Liczba cykli: 2
Nie wykonuje się żadna operacja.
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.
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.
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.
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
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.
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.
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).
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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).
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.