MIKROPROCESOR MOTOROLA MC68000
Lista rozkazów
ADD i SUB
ADD op1,Dn
Dodaje operand źródłowy do rejestru danych.
ADD Dn,op2
Dodaje rejestr danych do operandu docelowego.
SUB op1,Dn
Odejmuje operand źródłowy od rejestru danych.
SUB Dn,op2
Odejmuje rejestr danych od operandu docelowego.
Rozmiar: B,W,L.
Ustawiane flagi |
||||
X |
N |
Z |
V |
C |
+ |
+ |
+ |
+ |
+ |
Tryby adresowania dla op1 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
Tryby adresowania dla op2 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
- |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
- |
- |
- |
ADDA i SUBA
ADDA op1,An
Dodaje operand źródłowy do rejestru adresowego.
SUBA op1,An
Odejmuje operand źródłowy od rejestru adresowego.
Rozmiar: W,L.
Flagi nie są zmieniane.
Tryby adresowania dla op1 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
ADDI i SUBI
ADDI #x,op1
Dodaje stałą do operandu docelowego.
SUBI #x,op1
Odejmuje stałą od operandu docelowego.
Rozmiar: B,W,L.
Ustawiane flagi |
||||
X |
N |
Z |
V |
C |
+ |
+ |
+ |
+ |
+ |
Tryby adresowania dla op1 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
+ |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
- |
- |
- |
AND i OR
ADD op1,Dn
Wykonuje iloczyn logiczny operandu źródłowego z rejestrem danych (wynik w rejestrze danych).
ADD Dn,op2
Wykonuje iloczyn logiczny rejestru danych z operandem przeznaczenia (wynik w operandzie przeznaczenia).
OR op1,Dn
Wykonuje sumę logiczną operandu źródłowego z rejestrem danych (wynik w rejestrze danych).
OR Dn,op2
Wykonuje sumę logiczną rejestru danych z operandem przeznaczenia (wynik w operandzie przeznaczenia).
Rozmiar: B,W,L.
Ustawiane flagi |
||||
X |
N |
Z |
V |
C |
- |
+ |
+ |
0 |
0 |
Tryby adresowania dla op1 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
+ |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
Tryby adresowania dla op2 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
- |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
- |
- |
- |
EOR
EOR Dn,op1
Wykonuje działanie różnicy symetrycznej (sumę mod 2) rejestru danych z operandem przeznaczenia (wynik w operandzie przeznaczenia).
Rozmiar: B,W,L.
Ustawiane flagi |
||||
X |
N |
Z |
V |
C |
- |
+ |
+ |
0 |
0 |
Tryby adresowania dla op1 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
+ |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
- |
- |
- |
ANDI, ORI i EORI
ANDI #x,op1
Wykonuje iloczyn logiczny stałej z operandem docelowym.
ORI #x,op1
Wykonuje sumę logiczną stałej z operandem docelowym.
EORI #x,op1
Wykonuje działanie różnicy symetrycznej (sumę mod 2) stałej z operandem docelowym.
Rozmiar: B,W,L.
Ustawiane flagi |
||||
X |
N |
Z |
V |
C |
- |
+ |
+ |
0 |
0 |
Tryby adresowania dla op1 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
+ |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
- |
- |
- |
ASL
ASL #x,DN
Przesuwa arytmetycznie bity rejestru danych w lewo o stałą (od 1 do 8 włącznie).
ASL DM,DN
Przesuwa arytmetycznie bity rejestru danych DN w lewo o liczbę zawartą w rejestrze danych DM.
ASL op1
Przesuwa arytmetycznie bity operandu przeznaczenia w lewo o 1.
Rozmiar: B,W,L. Dla operandu docelowego znajdującego się w pamięci tylko W.
Ustawiane flagi |
||||
X |
N |
Z |
V |
C |
+ |
+ |
+ |
+ |
+ |
Tryby adresowania dla op1 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
- |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
- |
- |
- |
ASR
ASR #x,DN
Przesuwa arytmetycznie bity rejestru danych w prawo o stałą (od 1 do 8 włącznie).
ASR DM,DN
Przesuwa arytmetycznie bity rejestru danych DN w prawo o liczbę zawartą w rejestrze danych DM.
ASR op1
Przesuwa arytmetycznie bity operandu przeznaczenia w prawo o 1.
Rozmiar: B,W,L. Dla operandu docelowego znajdującego się w pamięci tylko W.
Ustawiane flagi |
||||
X |
N |
Z |
V |
C |
+ |
+ |
+ |
0 |
+ |
Tryby adresowania dla op1 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
- |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
- |
- |
- |
BCC
Bcc etykieta
Skocz do etykiety, gdy spełniony zostanie warunek.
BCC - carry skasowany; C=0.
BSC - carry ustawiony; C=1.
BEQ - równy; Z=1.
BGE - większy lub równy; (N=1 i V=1) lub (N=0 i V=0).
BGT - większy; (N=1 i V=1 i Z=0) lub (N=0 i V=0 i Z=0).
BHI - wyższy; C=0 i Z=0.
BLE - mniejszy lub równy; Z=1 lub (N=1 i V=0) lub (N=0 i V=1).
BLS - niższy lub taki sam; C=1 lub Z=1.
BLT - mniejszy; (N=1 i V=0) lub (N=0 i V=1).
BMI - ujemny; N=1.
BNE - różny; Z=0.
BPL - dodatni; N=0.
BVC - overflow skasowany; V=0.
BVS - overflow ustawiony; V=1.
BRA - zawsze; skok bezwarunkowy.
Rozmiar: B,W.
Flagi nie są zmieniane.
Jedynym dozwolonym trybem adresowania jest stała (rozmiaru bajtu lub słowa) względem licznika rozkazów.
BCHG, BCLR i BSET
BCHG #x,op1
Testuje i zmienia na przeciwny bit operandu docelowego o numerze określonym stałą.
BCHG DN,op1
Testuje i zmienia na przeciwny bit operandu docelowego o numerze określonym liczbą w rejestrze danych DN.
BCLR #x,op1
Testuje i kasuje bit operandu docelowego o numerze określonym stałą.
BCLR DN,op1
Testuje i kasuje bit operandu docelowego o numerze określonym liczbą w rejestrze danych DN.
BSET #x,op1
Testuje i ustawia bit operandu docelowego o numerze określonym stałą.
BSET DN,op1
Testuje i ustawia bit operandu docelowego o numerze określonym liczbą w rejestrze danych DN.
BTST #x,op1
Testuje bit operandu docelowego o numerze określonym stałą.
BTST DN,op1
Testuje bit operandu docelowego o numerze określonym liczbą w rejestrze danych DN.
Rozmiar: B (dla pamięci), L (dla rejestru danych).
Ustawiane flagi |
||||
X |
N |
Z |
V |
C |
- |
- |
+ |
- |
- |
Tryby adresowania dla op1 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
+ |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
- |
- |
- |
BTST
BTST #x,op1
Testuje bit operandu docelowego o numerze określonym stałą.
BTST DN,op1
Testuje bit operandu docelowego o numerze określonym liczbą w rejestrze danych DN.
Rozmiar: B (dla pamięci), L (dla rejestru danych).
Ustawiane flagi |
||||
X |
N |
Z |
V |
C |
- |
- |
+ |
- |
- |
Tryby adresowania dla op1 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
+ |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
- |
CMP
CMP op1,DN
Porównuje zawartość rejestru danych z operandem źródłowym (odejmuje operand źródłowy od rejestru danych nie zapamiętując wyniku).
Rozmiar: B, W, L.
Ustawiane flagi |
||||
X |
N |
Z |
V |
C |
- |
+ |
+ |
+ |
+ |
Tryby adresowania dla op1 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
CMPA
CMPA op1,AN
Porównuje zawartość rejestru adresowego z operandem źródłowym (odejmuje operand źródłowy od rejestru adresowego nie zapamiętując wyniku).
Rozmiar: W, L.
Ustawiane flagi |
||||
X |
N |
Z |
V |
C |
- |
+ |
+ |
+ |
+ |
Tryby adresowania dla op1 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
CMPI
CMPI #x,op1
Porównuje operand docelowy ze stałą (odejmuje stałą od operandu docelowego nie zapamiętując wyniku).
Rozmiar: B,W, L.
Ustawiane flagi |
||||
X |
N |
Z |
V |
C |
- |
+ |
+ |
+ |
+ |
Tryby adresowania dla op1 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
+ |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
- |
- |
- |
DIVS i DIVU
DIVS op1, DN
Dzieli (z uwzględnieniem znaku) 32-bitową liczbę zawartą w rejestrze danych przez 16-bitową liczbę określoną operandem źródłowym. Wynik w rejestrze danych: dolne 16 bitów iloraz, górne 16 bitów reszta.
DIVU op1, DN
Dzieli (bez uwzględniania znaku) 32-bitową liczbę zawartą w rejestrze danych przez 16-bitową liczbę określoną operandem źródłowym. Wynik w rejestrze danych: dolne 16 bitów iloraz, górne 16 bitów reszta.
Rozmiar: W.
Ustawiane flagi |
||||
X |
N |
Z |
V |
C |
- |
+ |
+ |
+ |
0 |
Tryby adresowania dla op1 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
+ |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
EXT
EXT DN
Rozszerza znakowo liczbę w rejestrze danych do rozmiaru słowa (z bajtu) lub długiego słowa (ze słowa).
Rozmiar: W,L.
Ustawiane flagi |
||||
X |
N |
Z |
V |
C |
- |
+ |
+ |
0 |
0 |
Jedynym dozwolonym trybem adresowania jest bezpośrednie rejestru danych.
LSL
LSL #x,DN
Przesuwa logicznie bity rejestru danych w lewo o stałą (od 1 do 8 włącznie).
LSL DM,DN
Przesuwa logicznie bity rejestru danych DN w lewo o liczbę zawartą w rejestrze danych DM.
LSL op1
Przesuwa logicznie bity operandu przeznaczenia w lewo o 1.
Rozmiar: B,W,L. Dla operandu docelowego znajdującego się w pamięci tylko W.
Ustawiane flagi |
||||
X |
N |
Z |
V |
C |
+ |
+ |
+ |
0 |
+ |
Tryby adresowania dla op1 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
- |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
- |
- |
- |
LSR
LSR #x,DN
Przesuwa logicznie bity rejestru danych w lewo o stałą (od 1 do 8 włącznie).
LSR DM,DN
Przesuwa logicznie bity rejestru danych DN w lewo o liczbę zawartą w rejestrze danych DM.
LSR op1
Przesuwa logicznie bity operandu przeznaczenia w lewo o 1.
Rozmiar: B,W,L. Dla operandu docelowego znajdującego się w pamięci tylko W.
Ustawiane flagi |
||||
X |
N |
Z |
V |
C |
+ |
+ |
+ |
0 |
+ |
Tryby adresowania dla op1 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
- |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
- |
- |
- |
MOVE
MOVE op1,op2
Przesyła zawartość operandu źródłowego do docelowego.
Rozmiar: B,W,L.
Ustawiane flagi |
||||
X |
N |
Z |
V |
C |
- |
+ |
+ |
0 |
0 |
Tryby adresowania dla op1 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
Tryby adresowania dla op2 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
+ |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
- |
- |
- |
MOVEA
MOVEA op1,AN
Przesyła zawartość operandu źródłowego do rejestru adresowego.
Rozmiar: W,L.
Flagi nie są zmieniane.
Tryby adresowania dla op1 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
MULS i MULU
MULS op1,DN
Mnoży (uwzględniając znak) 16-bitową daną zawartą w młodszym słowie rejestru danych przez 16-bitową liczbę określoną operandem źródłowym. 32-bitowy wynik zapamiętywany jest w rejestrze danych.
MULU op1,DN
Mnoży (nie uwzględniając znaku) 16-bitową daną zawartą w młodszym słowie rejestru danych przez 16-bitową liczbę określoną operandem źródłowym. 32-bitowy wynik zapamiętywany jest w rejestrze danych.
Rozmiar: W.
Ustawiane flagi |
||||
X |
N |
Z |
V |
C |
- |
+ |
+ |
0 |
0 |
Tryby adresowania dla op1 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
+ |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
NEG
NEG op1
Zamienia liczbę określoną operandem źródłowym na przeciwną (tworzy uzupełnienie do dwóch operandu).
Rozmiar: B,W,L.
Ustawiane flagi |
||||
X |
N |
Z |
V |
C |
+ |
+ |
+ |
+ |
+ |
Tryby adresowania dla op1 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
+ |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
- |
- |
- |
NOT
NOT op1
Neguje zawartość operandeu źródłowego.
Rozmiar: B,W,L.
Ustawiane flagi |
||||
X |
N |
Z |
V |
C |
- |
+ |
+ |
0 |
0 |
Tryby adresowania dla op1 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
+ |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
- |
- |
- |
TST
TST op1
Testuje operand źródłowy.
Rozmiar: B,W,L.
Ustawiane flagi |
||||
X |
N |
Z |
V |
C |
- |
+ |
+ |
0 |
0 |
Tryby adresowania dla op1 |
|||||||||||
DN |
AN |
(AN) |
(AN)+ |
(AN)+ |
-( AN) |
x (AN) |
x(AN,R) |
x |
x(PC) |
x(PC,R) |
#x |
+ |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
- |
- |
- |
Flagi
Oznaczenia stosowane przy flagach:
Symbol |
Opis |
+ |
flaga może być zmieniona |
- |
flaga nie jest zmieniana |
0 |
flaga jest zawsze zerowana |
Oznaczenia flag:
Symbol |
Flaga |
X |
extend (rozszerzenia) |
N |
negative (ujemny) |
Z |
zero |
V |
overflow (nadmiar) |
C |
carry (przeniesienie) |
Tryby adresowania
Oznaczenie |
Nazwa |
Działanie |
DN |
bezpośrednie rejestru danych |
operand znajduje się w rejestrze danych DN |
AN |
bezpośrednie rejestru adresowego |
operand znajduje się w rejestrze adresowym AN |
(AN) |
pośrednie rejestrem adresowym |
operand znajduje się w komórce pamięci wskazywanej przez rejest adresowy AN |
(AN)+ |
pośrednie rejestrem adresowym z postinkrementacją |
jak (AN), z tym, że po wykonaniu operacji zawartość rejestru adresowego AN zostaje zwiększona o rozmiar operandu (wynik jest zachowany). |
-(AN) |
pośrednie rejestrem adresowym z predekrementacją |
jak (AN), z tym, że przed wykonaniem operacji zawartość rejestru adresowego AN zostaje zmniejszona o rozmiar operandu (wynik jest zachowany). |
x(AN) |
pośrednie rejestrem adresowym z przesunięciem |
adres efektywny komórki pamięci zawierającej operand powstaje w wyniku zsumowania zawartości rejestru adresowego AN i stałej x o rozmiarze słowa. |
x(AN,R) |
pośrednie rejestrem adresowym z indeksem |
adres efektywny komórki pamięci zawierającej operand powstaje w wyniku zsumowania zawartości rejestru adresowego AN, indeksu (rejestru danych DM lub adresowego AMtraktowanego jako słowo lub długie słowo i stałej b o rozmiarze bajtu. |
x |
absolutne |
operand znajduje się w komórce pamięci określonej stałą o rozmiarze długiego słowa (adresowanie absolutne długie) lub słowa (adresowanie absolutne krótkie). |
x(PC) |
licznikiem programu z przesunięciem |
jak x(AN), z tym, że zamiast rejestru adresowego użyty jest licznik programu PC. |
x(PC,R) |
licznikiem programu z indeksem |
jak x(AN,R), z tym, że zamiast rejestru adresowego AN użyty jest licznik programu PC. |
#x |
natychmiastowe |
Operand jest stałą x. |