Skrócona lista rozkazów mikroprocesora 8086


Skrócona lista rozkazów mikroprocesora 8086
Rozkazy mikroprocesora 8086 można podzielić na siedem funkcjonalnych grup:
1. Rozkazy przesłania danych w pami ci.
2. Arytmetyczne.
3. Logiczne.
4. Operacje blokowe.
5. Skoki.
6. Operacje kontroli procesora.
7. Rozkazy wejścia/wyjścia.
1. Rozkazy przesyłania danych
Rozkazy przesyłania danych pozwalaj działać na danych bajtowych i 16-bitowych
(słowa). Specjalnym ich przypadkiem s rozkazy przekazywania danych 32-bitowych, które
służ do inicjalizacji rejestru (np. adresowego) i rejestru segmentu pełnym adresem 20-
bitowym. Rozkazy przesyłania można podzielić na:
uniwersalne,
przesyłania adresów,
przesyłania rejestru stanu.
Do grupy rozkazów uniwersalnych zalicza si rozkazy:
MOV - przeznaczony do przesyłania słów lub bajtów w operacjach typu rejestr-pami ć z (do)
dowolnych rejestrów. Rozkaz ten może też przesyłać do pami ci dane określone w trybie
prostym bez pośrednictwa rejestru.
Składnia:
MOV reg, reg - pomi dzy rejestrami
MOV mem,reg - z rejestru do pami ci
MOV reg,mem - z pami ci do rejestru
MOV reg,stała - stałej do rejstru
MOV mem,stała - stałej do pami ci
MOV reg,seg - z rejestru segmentowego do rejestru 16-bitowego
MOV mem,seg - z rejestru segmentowego do pami ci
MOV seg,mem - z pami ci do rejestru segmentowego
PUSH - przesłanie słowa na szczyt stosu.
Składnia:
PUSH reg/mem - prześlij 16-bitow wartość z rejestru lub pami ci na stos
PUSH stała - prześlij stał na stos
POP - pobranie słowa ze szczytu stosu, a nast pnie modyfikacja wskaznika stosu.
Składnia:
POP reg,mem - pobierz dan ze stosu do rejestru lub do pami ci
XCHG - służy do wymiany zawartości rejestrów i pami ci. Argumentem rozkazu nie mog
być rejestry segmentowe.
Składnia:
XCHG reg/mem,mem/reg
LEA - rozkaz przesyłania do rejestru 16-bitowego adresu efektywnego określonego w trybie
odwołania do pami ci. Rejestrem wynikowym operacji może być rejestr uniwersalny,
wskaznik lub rejestr indeksowy. Rozkaz jest przeznaczony do pobierania adresu obiektu z
pami ci w celu rutynowych działań na adresach.
Składnia:
LEA reg,pami ć - zmienna pami ć jest komórk pami ci, której adres efektywny
b dzie wyliczony i przesłany do rejestru reg.
LDS - rozkaz pobrania adresu z jednoczesnym załadowaniem rejestru DS i podanego rejestru.
Składnia:
LDS reg,pami ć - pami ć zawiera adres ładowany do rejestru segmentowego i do
rejestru podanego jako argument.
LES - rozkaz pobrania adresu z jednoczesnym załadowaniem rejestru ES i podanego rejestru.
Składnia:
LES reg,pami ć - pami ć zawiera adres ładowany do rejestru segmentowego i do
rejestru podanego jako argument.
LAHF - rozkaz pobrania do rejestru AH młodszego bajtu rejestru znaczników
Składnia:
LAHF
SAHF - rozkaz przesłania do rejestru znaczników rejestru AH.
Składnia:
SAHF
Ponadto ze stosem współpracuj instrukcje POPF i PUSHF:
POPF - pobranie do rejestru znaczników słowa ze stosu.
Składnia:
POPF
PUSHF - odłożenie rejestru znaczników na stos.
Składnia:
PUSHF
2. Rozkazy arytmetyczne
Rozkazy arytmetyczne mikroprocesora 8086 mog wykonywać cztery podstawowe
działania arytmetyczne: dodawanie, odejmowanie, mnożenie i dzielenie, operuj c na danych
8- i 16-bitowych. Każde z działań może operować na liczbach przedstawionych na trzy
sposoby:
niekodowanych - zwykła reprezentacja dwójkowa liczb (np. 10000000b),
na liczbach kodowanych dziesi tnie (np. 128),
liczbach zapisywanych w postaci HEX (np. 80h).
ADD - dodawanie arytmetyczne dwóch liczb.
Składnia:
ADD reg,reg - dodawanie zawartości dwóch rejestrów
ADD reg,mem - dodawanie do zawartości rejestru danej z pami ci
ADD mem,reg - dodawanie do danej w pami ci zawartości rejestru
ADD reg,stała - dodawanie danej natychmiastowej do rejestru
ADD mem,stała - dodawanie danej natychmiastowej do danej w pami ci
SUB - odejmowanie arytmetyczne dwóch liczb.
Składnia:
SUB reg,reg - dodawanie zawartości dwóch rejestrów
SUB reg,mem - dodawanie do zawartości rejestru danej z pami ci
SUB mem,reg - dodawanie do danej w pami ci zawartości rejestru
SUB reg,stała - dodawanie danej natychmiastowej do rejestru
SUB mem,stała - dodawanie danej natychmiastowej do danej w pami ci
ADC - dodawanie dwóch liczb i znacznika przeniesienia. Instrukcja najcz ściej używana przy
dodawaniu liczb wielobajtowych. Pozwala ona bowiem na uwzgl dnianie przeniesień,
powstałych na młodszych bajtach.
Składnia:
ADC reg,reg - dodawanie zawartości dwóch rejestrów
ADC reg,mem - dodawanie do zawartości rejestru danej z pami ci
ADC mem,reg - dodawanie do danej w pami ci zawartości rejestru
ADC reg,stała - dodawanie danej natychmiastowej do rejestru
ADC mem,stała - dodawanie danej natychmiastowej do danej w pami ci
SBB - odejmowanie arytmetyczne dwóch liczb z pożyczk
Składnia:
SBB reg,reg - dodawanie zawartości dwóch rejestrów
SBB reg,mem - dodawanie do zawartości rejestru danej z pami ci
SBB mem,reg - dodawanie do danej w pami ci zawartości rejestru
SBB reg,stała - dodawanie danej natychmiastowej do rejestru
SBB mem,stała - dodawanie danej natychmiastowej do danej w pami ci
INC - zwi kszenie bajtu lub słowa o 1 (inkrementacja).
Składnia:
INC reg - inkrementacja rejestru
INC mem - inkrementacja komórki w pami ci
DEC - zmniejszenie bajtu lub słowa o 1 (dekremantacja).
Składnia:
DEC reg - dekrementacja rejestru
DEC mem - dekrementacja komórki w pami ci
AAA - instrukcja AAA używana jest do korekty wyniku po dodaniu dwóch liczb w
rozpakowanym kodzie BCD (generalnie 16-bitowych).
Składnia:
AAA - korekcja
Przykład.
mov bx,0207h
mov ax,0405h
add ax,bx teraz ax=060Ch
aaa teraz ax=0702h
AAS - instrukcja AAS używana jest do korekty wyniku po odj ciu dwóch liczb w
rozpakowanym kodzie BCD (generalnie 16-bitowych).
Składnia:
AAS - korekcja
Przykład.
mov ax,0505h
mov bx,0207h
sub ax,bx teraz ax=02FEh
aas teraz ax=0108h
DAA, DAS - działaj tak jak instrukcje AAA i AAS, tylko na argumentach w upakowanym
kodzie BCD (generalnie 8-bitowych).
MUL - mnożenie liczb bez znaku. Operacja 8-bitowa pobiera pierwszy argument z AL.,
natomiast operacja 16-bitowa pobiera argument z AX. Wynik jest przekazywany w
pierwszym przypadku do AX, natomiast w drugim przypadku do pary rejestrów AX i DX.
Składnia:
MUL reg - mnożenie przez rejestr
MUL mem - mnożenie przez zawartość komórki pami ci
IMUL - jak wyżej dla liczb ze znakiem.
Składnia:
IMUL reg - mnożenie przez rejestr
IMUL mem - mnożenie przez zawartość komórki pami ci
DIV - dzielenie liczb bez znaku. Operacja dzielenia przez dzielnik 8-bitowy pobiera pierwszy
argument z AX, natomiast operacja dzielenia przez dzielnik 16-bitowy pobiera argument z
pary rejestrów AX i DX (DX jest starszym słowem wyniku).
Składnia:
DIV reg - dzielenie przez dan z rejestru
DIV mem - dzielenie przez dan z komórki pami ci
IDIV - jak wyżej dla liczb ze znakiem.
AAD - instrukcja konwersji liczby w rozpakowanym kodzie BCD, znajduj cej si w
rejestrach AH i AL., na liczb binarn .
Składnia:
AAD - konwersja
AAM - instrukcja konwersji liczby w binarnej z rejestru AX na rozpakowany kod BCD, do
rejestrów AH i AL.
Składnia:
AAM - konwersja
Przykład.
Po wykonaniu instrukcji
mov ax,52h dziesi tnie jest to 82
aam al=2, ah=8
CBW - przekształcenie bajtu w AL na słowo w AX z uwzgl dnieniem znaku liczby.
Składnia:
CBW - przekształcenie
Przykład.
mov al,80h dziesi tnie jest to -128
cbw ax=FF80h
CWB - przekształcenie słowa w AX na podwójne słowo (zapisane w parze rejestrów AX i
DX).
Składnia:
CWD - przekształcenie
Przykład.
mov ax,8000h dziesi tnie jest to -32768
cwd ax=8000h, dx=FFFFhŁdx jest starszym słowem wyniku
3. Rozkazy logiczne, przesuni cia i obroty
Rozkazy logiczne obejmuj standardowy zbiór operacji: negacji, sumy, iloczynu i różnicy
symetrycznej. Przesuni cia i obroty wyst puj w ośmiu wariantach. Mog być jedno- i
wielokrokowe. Wyniki przekazuj w rejestrze lub pami ci. Wariant krokowy odwołuje si do
rejestru CL, jako zródła licznika przesuni cia.
Do jednoargumentowych rozkazów tej grupy należ :
NOT - negacja każdego bitu liczby.
Składnia:
NOT reg - negacja danej w rejestrze
NOT mem - negacja danej w pami ci
SHL - przesuni cie logiczne w lewo.
Składnia:
SHL mem,1 - przesuni cie logiczne komórki pami ci o 1 w lewo
SHL reg,1 - przesuni cie logiczne zawartości rejestru o 1 w lewo
SHL mem,cl - przesuni cie logiczne komórki pami ci o zawartość CL w lewo
SHL reg,cl - przesuni cie logiczne komórki rejestru o zawartość CL w lewo
SHR - przesuni cie logiczne w prawo. Składnia i argumenty jak dla SHL.
SAL - przesuni cie arytmetyczne w lewo. Operacja równoważna z mnożeniem przez 2.
Składnia:
SAL mem,1 - przesuni cie arytm. komórki pami ci o 1 w lewo
SAL reg,1 - przesuni cie arytm. zawartości rejestru o 1 w lewo
SAL mem,cl - przesuni cie arytm. komórki pami ci o zawartość CL w lewo
SAL reg,cl - przesuni cie arytm. komórki rejestru o zawartość CL w lewo
SAR - przesuni cie arytmetyczne w prawo. Operacja równoważna z dzieleniem przez 2.
Składnia:
SAR mem,1 - przesuni cie arytm. komórki pami ci o 1 w prawo
SAR reg,1 - przesuni cie arytm. zawartości rejestru o 1 w prawo
SAR mem,cl - przesuni cie arytm. komórki pami ci o zawartość CL w prawo
SAR reg,cl - przesuni cie arytm. komórki rejestru o zawartość CL w prawo
ROL - obrót w lewo. Składnia jak dla rozkazów SHL, SHR, SAL, SHR.
ROR - obrót w prawo. Składnia jak dla rozkazów SHL, SHR, SAL, SHR.
RCL - obrót w lewo z uwzgl dnieniem bity Carry. Składnia jak dla rozkazów SHL, SHR,
SAL,
SHR.
RCR - obrót w prawo z uwzgl dnieniem bity Carry. Składnia jak dla rozkazów SHL, SHR,
SAL, SHR.
Rozkazami dwuargumentowymi s :
AND - Mnożenie logiczne argumentów.
Składnia:
AND reg,reg - mnożenie logiczne zawartości dwóch rejestrów
AND reg,mem - mnożenie logiczne zawartości rejestru i danej w pami ci
AND mem,reg - mnożenie logiczne danej w pami ci i zawartości rejestru
AND reg,stala - mnożenie logiczne zawartości rejestru i stałej
AND mem,stała - mnożenie logiczne danej w pami ci i zawartości rejestru
TEST - testowanie wybranych bitów argumentów. Instrukcja ta wykonuje logiczn operacj
AND na swoich argumentach. Wynik nie jest nigdzie zapami tywany, ale na jego podstawie
ustawiane s znaczniki.
Składnia:
TEST reg,reg - testowanie zawartości dwóch rejestrów
TEST reg,mem - testowanie zawartości rejestru z dan w pami ci
TEST mem,reg - testowanie danej w pami ci z zawartości rejsetru
TEST reg,stała - testowanie zawartości rejestru z dan natychmiastow
TEST mem,stała - testowanie danej w pami ci z dan natychmiastow
OR - suma logiczna argumentów.
Składnia:
OR reg,reg - suma logiczna zawartości dwóch rejestrów
OR reg,mem - suma logiczna zawartości rejestru i danej w pami ci
OR mem,reg - suma logiczna danej w pami ci zawartości rejestru
OR reg,stała - suma logiczna zawartości rejestru i danej natychmiastowej
OR mem,stała - suma logiczna danej w pami ci z dan natychmiastow
XOR - różnica symetryczna argumentów. Składnia jak dla instrukcji OR.
4. Rozkazy operacji blokowych
Rozkazy tego typu:
mog być wykorzystywane w wariancie jedno- i wielokrokowym,
używaj rejestrów implicite przypisanych do adresowanie i zliczania kroków: rejestr SI jest
zródłem adresu danych, DI - adresu wyniku, a CX licznikiem kroków,
rozkaz wielokrokowy może być przerywany po zakończeniu kroku,
kierunek operacji zależy od stanu bitu DF w rejestrze znaczników (0-zwi kszanie, 1-
zmniejszanie).
Do rozkazów tych należ (w nawiasach rozkazy bajtowe lub działaj ce na słowach):
MOVS (MOVSB, MOVSW) - przepisanie danych (bajt lub słowo) - instrukcja przepisuje
dane wskazywane przez DS:SI pod adres ES:DI, a nast pnie modyfikuj rejestry indeksowe.
CMPS (CMPSB, CMPSW) - porównanie danych (bajt lub słowo) - instrukcja porównuje
dane wskazywane przez DS:SI pod adres ES:DI, a nast pnie modyfikuj rejestry indeksowe.
SCAS (SCASB, SCASW) - porównanie danych (bajtu lub słowa) wskazywanych przez par
rejestrów ES:DI z dan która si znajduje w AL lub AX.
LODS (LODSB, LODSW) - załadowanie danych (bajtu lub słowa) - instrukcja ładuje dane z
pami ci wskazywane przez DS:SI do AL lub AX.
STOS (STOSB< STOSW) - przesłanie danych (bajtu lub słowa) - instrukcja przesyła dane z
AL lub AX do miejsca w pami ci wskazywanego przez ES:DI. Instrukcja ta działa odwrotnie
do instrukcji LODS.
Każda z instrukcji blokowych może być poprzedzona instrukcj REP, co spowoduje, że
zostanie ona wykonana nie jeden raz, ale CX razy (rejestr CX b dzie zawierał liczb
powtórzeń każdej z instrukcji blokowej).
5. Rozkazy skoków
Rozkazy skoków można podzielić na:
skoki zwykłe i warunkowe,
wywołania podprogramów,
powroty z procedur,
rozkazy tworzenia iteracji,
przerwania programowe.
Mnemoniki Opis
Skoki bezwarunkowe:
CALL Skok do podprogramu (wywołanie procedury)
JMP Skok bezwarunkowy
RET Powrót z podprogramu (procedury)
Skoki warunkowe:
JE / JZ Skok, gdy równy / zero
JNE / JNZ Skok, gdy nie równy / nie zero
JO Skok, gdy nadmiar po operacji dla liczb ze znakiem (> 32767)
JNO Skok, gdy nie ma nadmiaru po operacji dla liczb ze znakiem (< 32767)
JC Skok, gdy nadmiar po operacji dla liczb bez znaku (> 65535)
JNC Skok, gdy nie ma nadmiaru po operacji dla liczb bez znaku (< 65535)
JP / JPE Skok, gdy parzystość (parity even) (flaga PF=1)
JNP / JPO Skok, gdy nieparzystość (parity odd) (flaga PF=0)
JS Skok, gdy znak ujemny (flaga SF = 1)
JNS Skok, gdy znak dodatni (flaga SF = 0)
Skoki warunkowe po porównaniach liczb bez znaku (unsigned):
JB / JNAE Skok, gdy poniżej/nie powyżej lub nie równo
JBE / JNA Skok, gdy poniżej lub równo/nie powyżej
JAE / JNB Skok, gdy powyżej lub równo / nie poniżej
JA / JNBE Skok, gdy powyżej / nie poniżej lub równo
Skoki warunkowe po porównaniach liczb ze znakiem (signed):
JL / JNGE Skok, gdy mniejszy/nie równy lub nie wi kszy
JLE / JNG Skok, gdy mniejszy lub równy / nie wi kszy
JGE / JNL Skok, gdy wi kszy lub równy / nie mniejszy
JNLE/JG Skok, gdy nie mniejszy lub równy/wi kszy
Skoki zwi zane z wartości rejestru CX
JCXZ Skok, gdy rejestr CX = 0
6. Rozkazy kontroli iteracji
LOOP - zmniejsza CX o 1 i wykonuje skok, gdy CX ą 0.
Składnia:
LOOP nazwa_etykiety - skok do etykiety, gdy CX ą 0
LOOPE  działa jak LOOP, tylko skok gdy CXą 0 oraz bit zera jest ustawiony (ZF=1).
LOOPNE - działa jak LOOP, tylko skok gdy CXą 0 oraz bit zera nie jest ustawiony (ZF=0).
JCXZ - rozkaz skoku warunkowego, który jest wykonywany, gdy CX jest równy zero.
UWAGA:
Jak widać, rozkazy kontroli iteracji wykorzystuj rejestr CX jako licznik iteracji. Należy
zatem pami tać, aby w p tlach (bo do tego głównie b d wykorzystywane tego rodzaju skoki)
uważać z modyfikacj rejestru CX. Poza tym zasi g tych skoków to -128+127 bajtów.
Etykieta, do której wykonywany jest skok powinna si znajdować na ogół powyżej instrukcji
kontroli iteracji.
Przykład.
MOV CX,10
Tu:
...............
............... ci g instrukcji pętli
...............
LOOP Tu
Powyższa p tla zostanie wykonana 10 razy.
7. Rozkazy przerwań programowych
Procesor 8086 używa tablicy wektorów przerwań przechowuj cej 256 adresów procedur
obsługi przerwania. Lista rozkazów zawiera dwa przerwania programowe:
INT - przerwanie programowe.
Składnia:
INT numer_przerwania - wywołanie przerwania o podanym numerze
INTO - wygenerowanie przerwania nr 4 w przypadku, gdy znacznik nadmiaru jest ustawiony.
Składnia:
INTO
RET - powrót z podprogramu.
Skladnia:
RET
IRET - powrót z podprogramu obsługi przerwania.
Składnia:
IRET


Wyszukiwarka