background image

LISTA ROZKAZÓW I 

LISTA ROZKAZÓW I 

SPOSÓB PREZENTOWANIA 

SPOSÓB PREZENTOWANIA 

ROZKAZÓW

ROZKAZÓW

Sposób prezentowania rozkazu

Sposób prezentowania rozkazu

Przykładowe rozkazy

Przykładowe rozkazy

background image

Rozkazem 

(instrukcją 

maszynową) 

nazywamy 

najprostszą 

operację,  której  wykonania  programista  może  zażądać  od 
procesora

Rozkazem 

(instrukcją 

maszynową) 

nazywamy 

najprostszą 

operację,  której  wykonania  programista  może  zażądać  od 
procesora

Listą rozkazów nazywamy zestaw wszystkich instrukcji maszynowych 
(rozkazów), jakie potrafi wykonać dany procesor

Listą rozkazów nazywamy zestaw wszystkich instrukcji maszynowych 
(rozkazów), jakie potrafi wykonać dany procesor

rozkazy przesłań

rozkazy przesłań

rozkazy arytmetyczne i logiczne

rozkazy arytmetyczne i logiczne

rozkazy sterujące (skoki, wywołania podprogramów, pętle, itp.)

rozkazy sterujące (skoki, wywołania podprogramów, pętle, itp.)

inne (np. sterowanie pracą koprocesora, rozkazy testujące, operacje w trybie 

inne (np. sterowanie pracą koprocesora, rozkazy testujące, operacje w trybie 

chronionym)

chronionym)

Rozkazy (jak inne informacje) są przechowywane w systemie mikroprocesorowym w 

Rozkazy (jak inne informacje) są przechowywane w systemie mikroprocesorowym w 

postaci słów binarnych

postaci słów binarnych

LISTA ROZKAZÓW

LISTA ROZKAZÓW

Adres

komórki

Zawartość

komórki

0000

0000

1011

0001

0000

0001

0001

0101

0000

0010

1010

0000

0000

0011

0000

0000

0000

0100

0000

1111

0000

0101

0000

0000

0000

0110

1100

1000

0000

0111

1100

0110

0000

1000

1010

1010

-

-

0000

1111

0000

0010

MOV CL,5

MOV A, [B2,B3]

ADD CL,A

A=A+5

OUT [B2]

PRINT

    

    

rozkazy w postaci kodów binarnych

rozkazy w postaci kodów binarnych

   

   

instrukcje maszynowe

instrukcje maszynowe

instrukcje w FORTRANie

instrukcje w FORTRANie

background image

Rozkazy przesłań:

Rozkazy przesłań:

MOV - 

MOV - 

move

move

 - przesłanie słowa między dwoma rejestrami

 - przesłanie słowa między dwoma rejestrami

STR - 

STR - 

store 

store 

- przesłanie słowa ze wskazanego w rozkazie rejestru do 

- przesłanie słowa ze wskazanego w rozkazie rejestru do 

komórki pamięci

komórki pamięci

LD - 

LD - 

load

load

 - przesłanie słowa z pamięci do wskazanego rejestru

 - przesłanie słowa z pamięci do wskazanego rejestru

XCH - 

XCH - 

exchange 

exchange 

- wymiana zawartości rejestrów 

- wymiana zawartości rejestrów 

Rozkazy arytmetyczno-logiczne:

Rozkazy arytmetyczno-logiczne:

ADD - 

ADD - 

addition

addition

 - dodawanie

 - dodawanie

SUB - 

SUB - 

subtraction 

subtraction 

- odejmowanie

- odejmowanie

MUL - 

MUL - 

multiplication

multiplication

 - mnożenie

 - mnożenie

DIV - 

DIV - 

division 

division 

- dzielenie

- dzielenie

NEG - 

NEG - 

negate 

negate 

- negacja

- negacja

DEC - 

DEC - 

decrement 

decrement 

- zmniejszanie wartości o 

- zmniejszanie wartości o 

jeden

jeden

INC - 

INC - 

increment

increment

 - awiększanie wartości o 

 - awiększanie wartości o 

jeden

jeden

Rozkazy sterujące pracą programu:

Rozkazy sterujące pracą programu:

JMP - 

JMP - 

jump

jump

 - skok bezwarunkowy do wyspecyfikowanego miejsca w 

 - skok bezwarunkowy do wyspecyfikowanego miejsca w 

pamięci

pamięci

CALL - 

CALL - 

jump to subroutine 

jump to subroutine 

- wywołanie podprogramu

- wywołanie podprogramu

RET - 

RET - 

return

return

 - skok powrotny z podprogramu

 - skok powrotny z podprogramu

SKIP - 

SKIP - 

skip 

skip 

- przeskok przez jeden rozkaz

- przeskok przez jeden rozkaz

Rozkazy sterujące pracą procesora :

Rozkazy sterujące pracą procesora :

HALT - 

HALT - 

stop

stop

 - zatrzymanie wykonania programu

 - zatrzymanie wykonania programu

NOP - 

NOP - 

no operation 

no operation 

- rozkaz pusty

- rozkaz pusty

AND - 

AND - 

conjuction

conjuction

 - iloczyn

 - iloczyn

OR - 

OR - 

disjunction 

disjunction 

- suma

- suma

EXOR - 

EXOR - 

exclusive-OR

exclusive-OR

 -suma mod 2

 -suma mod 2

NOT - 

NOT - 

complement 

complement 

- negacja

- negacja

PRZYKŁADOWE ROZKAZY

PRZYKŁADOWE ROZKAZY

background image

JMP SHORT 

JMP SHORT 

NEXT

NEXT

mnemonik

mnemonik

argument

argument

EB 03h

EB 03h

Kod rozkazu w 

Kod rozkazu w 

kodzie 

kodzie 

heksadecymalnym

heksadecymalnym

Kod rozkazu 

Kod rozkazu 

binarnie (w 

binarnie (w 

pamięci)

pamięci)

SPOSÓB PREZENTOWANIA 

SPOSÓB PREZENTOWANIA 

ROZKAZU

ROZKAZU

kod operacji i pola 

kod operacji i pola 

argumentów

argumentów

1. 

1. 

Oznaczenie

Oznaczenie

 symboliczne rozkazu

 symboliczne rozkazu

Jest stosowane dla prezentacji programu człowiekowi lub przy 

Jest stosowane dla prezentacji programu człowiekowi lub przy 

pisaniu programów w asemblerze

pisaniu programów w asemblerze

Składa się ono z 

Składa się ono z 

mnemonika

mnemonika

 (skrótu, który powinien sugerować 

 (skrótu, który powinien sugerować 

rodzaj operacji) i 

rodzaj operacji) i 

pola argumentów

pola argumentów

Inne postaci tego 

Inne postaci tego 

rozkazu:

rozkazu:

Na przykład: ….

Na przykład: ….

background image

2. 

2. 

Opis działania rozkazu

Opis działania rozkazu

Jest możliwy w formie słownej lub symbolicznej

Jest możliwy w formie słownej lub symbolicznej

Opis słowny

Opis słowny

:

:

Wykonaj skok i pobierz kod rozkazu z 

Wykonaj skok i pobierz kod rozkazu z 

komórki pamięci o adresie równym 

komórki pamięci o adresie równym 

etykieta”

etykieta”

 

 (u nas NEXT=100)

Argumentem jest jednak nie adres komórki lecz długość 

Argumentem jest jednak nie adres komórki lecz długość 

skoku (interpretowana w kodzie U2). SHORT oznacza w tym 

skoku (interpretowana w kodzie U2). SHORT oznacza w tym 

przypadku skok bliski (w zakresie od 127 bajtów w górę do 

przypadku skok bliski (w zakresie od 127 bajtów w górę do 

128 bajtów w dół) 

128 bajtów w dół) 

Opis symboliczny

Opis symboliczny

:

:

(IP) 

(IP) 

 (IP) + przesunięcie

 (IP) + przesunięcie

 

 

czyli zwiększ licznik rozkazów o przesunięcie (o liczbę 

czyli zwiększ licznik rozkazów o przesunięcie (o liczbę 

komórek)

komórek)

SPOSÓB PREZENTOWANIA 

SPOSÓB PREZENTOWANIA 

ROZKAZU

ROZKAZU

background image

3. 

3. 

Format rozkazu i tryb adresowania

Format rozkazu i tryb adresowania

Jest to sposób rozmieszczenia informacji w kodzie rozkazu. Jest 

Jest to sposób rozmieszczenia informacji w kodzie rozkazu. Jest 

on następujący:

on następujący:

Kod 

Kod 

rozkazu

rozkazu

111010

111010

11

11

przemieszcze

przemieszcze

nie

nie

kod 

kod 

operacji

operacji

argument

argument

4. 

4. 

Ustawienie flagi

Ustawienie flagi

Istotną informacją jest określenie czy są ustawiane flagi (i 

Istotną informacją jest określenie czy są ustawiane flagi (i 

które) przy wykonaniu rozkazu. W tym przykładzie flagi nie są 

które) przy wykonaniu rozkazu. W tym przykładzie flagi nie są 

ustawiane.

ustawiane.

5. 

5. 

Szybkość wykonywania rozkazu

Szybkość wykonywania rozkazu

Szybkość podawana jest jako ilość taktów zegara procesora 

Szybkość podawana jest jako ilość taktów zegara procesora 

potrzebnych do wykonania rozkazu. W tym przykładzie 

potrzebnych do wykonania rozkazu. W tym przykładzie 

procesor 80386 wykonuje rozkaz w 7 taktach.

procesor 80386 wykonuje rozkaz w 7 taktach.

SPOSÓB PREZENTOWANIA 

SPOSÓB PREZENTOWANIA 

ROZKAZU

ROZKAZU

background image

Pole 

Pole 

kodu operacji

kodu operacji

 (1 lub 2 bajty) zawiera kod operacji, a 

 (1 lub 2 bajty) zawiera kod operacji, a 

pole adresu 

pole adresu 

argumentu lub argumentu

argumentu lub argumentu

 określa miejsce tego argumentu. 

 określa miejsce tego argumentu. 

Przykład dla rozkazu dodawania

Przykład dla rozkazu dodawania

:

:

W - określa rodzaj argumentu (0-bajt; 1-słowo)

W - określa rodzaj argumentu (0-bajt; 1-słowo)

D - bit kierunku określa przeznaczenie (0-REG

D - bit kierunku określa przeznaczenie (0-REG

R/M; 1-

R/M; 1-

REG 

REG 

R/M)

R/M)

MOD - określa rodzaj adresowania  

MOD - określa rodzaj adresowania  

11-rejestr do rejestru;

11-rejestr do rejestru;

10-adresowanie pamięci; przesunięcie bez znaku o 

10-adresowanie pamięci; przesunięcie bez znaku o 

długości słowa;

długości słowa;

01- adresowanie pamięci; przesunięcie ze znakiem o 

01- adresowanie pamięci; przesunięcie ze znakiem o 

długości bajtu;

długości bajtu;

00-adresowanie pamięci; bez przesunięcia

00-adresowanie pamięci; bez przesunięcia

R/M - określa tryb adresowania pamięci w zależności od 

R/M - określa tryb adresowania pamięci w zależności od 

MOD jeśli MOD=11  to operacje między rejestrami - 

MOD jeśli MOD=11  to operacje między rejestrami - 

wskazuje rejestr argumentu

wskazuje rejestr argumentu

MOD

MOD

11 wskazuje metodę obliczania adresu efekt. 

11 wskazuje metodę obliczania adresu efekt. 

argumentu

argumentu

0

0

1

1

2

2

3

3

4

4

5

5

6

6

7

7

0

0

1

1

2

2

3

3

4

4

5

5

6

6

7

7

Bajt 1

Bajt 1

Bajt 2

Bajt 2

Kod operacji

Kod operacji

D

D

W

W

MOD

MOD

REG

REG

R/M

R/M

REJ - identyfikator rejestru

REJ - identyfikator rejestru

W=1:

W=1:

W=0:

W=0:

000 - AX

000 - AX

000 - AL

000 - AL

001 - CX

001 - CX

001 - CL

001 - CL

010 - DX

010 - DX

010 - DL

010 - DL

011 - BX

011 - BX

011 - BL

011 - BL

100 - SP

100 - SP

100 - AH

100 - AH

101 - BP

101 - BP

101 - CH

101 - CH

110 - SI

110 - SI

110 - DH

110 - DH

111 - DI

111 - DI

111 - BH

111 - BH

ADD CH,DL

ADD CH,DL

00000

00000

0

0

0

0

0

0

01

01

0

0

1

1

1

1

10

10

1

1

Kod rozkazu - 00H D5H

Kod rozkazu - 00H D5H

Zobacz w pamięci kod rozkazu - 00H D5H

Zobacz w pamięci kod rozkazu - 00H D5H

KOD ROZKAZU

KOD ROZKAZU

background image

Kod rozkazu zostanie zapisany w pamięci pod adresem CS:IP

Kod rozkazu zostanie zapisany w pamięci pod adresem CS:IP

Można to zobaczyć

Można to zobaczyć

KOD ROZKAZU

KOD ROZKAZU

background image

Pole kodu operacji

Pole kodu operacji

 (1 lub 2 bajty) zawiera kod operacji, a pole adresu 

 (1 lub 2 bajty) zawiera kod operacji, a pole adresu 

argumentu lub argumentu określa miejsce tego argumentu. 

argumentu lub argumentu określa miejsce tego argumentu. 

Przykład dla rozkazu dodawania

Przykład dla rozkazu dodawania

:

:

W - określa rodzaj argumentu (0-bajt; 1-słowo)

W - określa rodzaj argumentu (0-bajt; 1-słowo)

D - bit kierunku określa przeznaczenie (0-REG

D - bit kierunku określa przeznaczenie (0-REG

R/M; 1-

R/M; 1-

REG 

REG 

R/M)

R/M)

MOD - określa rodzaj adresowania  

MOD - określa rodzaj adresowania  

11-rejestr do rejestru;

11-rejestr do rejestru;

10-adresowanie pamięci; przesunięcie bez znaku o 

10-adresowanie pamięci; przesunięcie bez znaku o 

długości słowa;

długości słowa;

01- adresowanie pamięci; przesunięcie ze znakiem o 

01- adresowanie pamięci; przesunięcie ze znakiem o 

długości bajtu;

długości bajtu;

00-adresowanie pamięci; bez przesunięcia

00-adresowanie pamięci; bez przesunięcia

R/M - określa tryb adresowania pamięci w zależności od 

R/M - określa tryb adresowania pamięci w zależności od 

MOD jeśli MOD=11  to operacje między rejestrami - 

MOD jeśli MOD=11  to operacje między rejestrami - 

wskazuje rejestr argumentu

wskazuje rejestr argumentu

MOD

MOD

11 wskazuje metodę obliczania adresu efekt. 

11 wskazuje metodę obliczania adresu efekt. 

argumentu

argumentu

0

0

1

1

2

2

3

3

4

4

5

5

6

6

7

7

0

0

1

1

2

2

3

3

4

4

5

5

6

6

7

7

Bajt 1

Bajt 1

Bajt 2

Bajt 2

Kod operacji

Kod operacji

D

D

W

W

MOD

MOD

REG

REG

R/M

R/M

REJ - identyfikator rejestru

REJ - identyfikator rejestru

W=1:

W=1:

W=0:

W=0:

000 - AX

000 - AX

000 - AL

000 - AL

001 - CX

001 - CX

001 - CL

001 - CL

010 - DX

010 - DX

010 - DL

010 - DL

011 - BX

011 - BX

011 - BL

011 - BL

100 - SP

100 - SP

100 - AH

100 - AH

101 - BP

101 - BP

101 - CH

101 - CH

110 - SI

110 - SI

110 - DH

110 - DH

111 - DI

111 - DI

111 - BH

111 - BH

ADD CX,DX

ADD CX,DX

00000

00000

0

0

1

1

0

0

01

01

0

0

1

1

1

1

00

00

1

1

Kod rozkazu - 01H D1H

Kod rozkazu - 01H D1H

Zobacz w pamięci kod rozkazu - 01H D1H

Zobacz w pamięci kod rozkazu - 01H D1H

KOD ROZKAZU

KOD ROZKAZU

background image

Kod rozkazu zostanie zapisany w pamięci pod adresem CS:IP

Kod rozkazu zostanie zapisany w pamięci pod adresem CS:IP

Można to zobaczyć

Można to zobaczyć

KOD ROZKAZU

KOD ROZKAZU

background image

Przykład dla rozkazu dodawania

Przykład dla rozkazu dodawania

:

:

Bajt 2

Bajt 2

Bajt 1

Bajt 1

Bajt 3

Bajt 3

Bajt 4

Bajt 4

Bajt 5

Bajt 5

Bajt 6

Bajt 6

Kod 

Kod 

operacji

operacji

ADD CH,20H

ADD CH,20H

dodaj w trybie natychmiastowym bajt do rejestru bajtowego

dodaj w trybie natychmiastowym bajt do rejestru bajtowego

D

D

MOD

MOD

REG

REG

R/M

R/M

Przesunięcie

Przesunięcie

Przesunięcie

Przesunięcie

Dane

Dane

Dane dla DW=01

Dane dla DW=01

użyto bajtów 1,2 i 5 rozkazu

użyto bajtów 1,2 i 5 rozkazu

D=0; W=0, MOD=11; R/M i REG wskazują rejestr przeznaczenia

D=0; W=0, MOD=11; R/M i REG wskazują rejestr przeznaczenia

ADD CX,2A39H

ADD CX,2A39H

dodaj w trybie natychmiastowym słowo do rejestru

dodaj w trybie natychmiastowym słowo do rejestru

użyto bajtów 1,2,5 i 6 rozkazu

użyto bajtów 1,2,5 i 6 rozkazu

D=0; W=1, MOD=11; R/M i REG wskazują rejestr przeznaczenia

D=0; W=1, MOD=11; R/M i REG wskazują rejestr przeznaczenia

ADD CX,20H

ADD CX,20H

dodaj w trybie natychmiastowym bajt do rejestru o długości słowa

dodaj w trybie natychmiastowym bajt do rejestru o długości słowa

użyto bajtów 1,2 i 5 rozkazu

użyto bajtów 1,2 i 5 rozkazu

znak bajtu zostanie rozszerzony w rejestrze CX w lewo o 8 bitów 

znak bajtu zostanie rozszerzony w rejestrze CX w lewo o 8 bitów 

dla utworzenia słowa; D=1; W=1

dla utworzenia słowa; D=1; W=1

W

W

Kod rozkazu 80H C5H 20H

Kod rozkazu 80H C5H 20H

10000000 11000101 00100000

10000000 11000101 00100000

Kod rozkazu 81H C1H 39H 2AH

Kod rozkazu 81H C1H 39H 2AH

10000001 11000001 00111001 00101010

10000001 11000001 00111001 00101010

Kod rozkazu 83H C1H 20H

Kod rozkazu 83H C1H 20H

10000011 11000001 00100000

10000011 11000001 00100000

»

Określa się 72 odmiany rozkazów ADD dodawania słów i 72 dodawania bajtów typu 

Określa się 72 odmiany rozkazów ADD dodawania słów i 72 dodawania bajtów typu 

rejestr-rejestr, rejestr-pamięć, pamięć-rejestr (

rejestr-rejestr, rejestr-pamięć, pamięć-rejestr (

pamięć-pamięć niemożliwe

pamięć-pamięć niemożliwe

)

)

»

Określa się 26 odmian rozkazów ADD dodawania z argumentem natychmiastowym 

Określa się 26 odmian rozkazów ADD dodawania z argumentem natychmiastowym 

(do pamięci lub rejestru) na słowach i 51 odmian operacji na bajtach

(do pamięci lub rejestru) na słowach i 51 odmian operacji na bajtach

»

Łącznie 221 bez 

Łącznie 221 bez 

bitu przeniesienia

bitu przeniesienia

 i tyle samo z 

 i tyle samo z 

bitem przeniesienia

bitem przeniesienia

»

144

144

»

77

77

»

442

442

KOD ROZKAZU

KOD ROZKAZU

background image

Przykład dla rozkazu przesłania

Przykład dla rozkazu przesłania

:

:

MOV CL,AL - skopiuj zawartość dolnej części akumulatora do 

MOV CL,AL - skopiuj zawartość dolnej części akumulatora do 

dolnej części rejestru licznika

dolnej części rejestru licznika

MOV  AL,BL  -  skopiuj  zawartość  dolnej  części  rejestru  B  do 

MOV  AL,BL  -  skopiuj  zawartość  dolnej  części  rejestru  B  do 

dolnej części rejestru akumulatora

dolnej części rejestru akumulatora

kod rozkazu: 88C1

kod rozkazu: 88C1

h

h

 = 1 0 0 0 1 0 0 0    1 1 0 0 0 0 0 1

 = 1 0 0 0 1 0 0 0    1 1 0 0 0 0 0 1

      

      

(MOV 

(MOV 

CL,AL) 

CL,AL) 

kod rozkazu: 88D8

kod rozkazu: 88D8

h

h

 = 1 0 0 0 1 0 0 0    1 1 0 1 1 0 0 0

 = 1 0 0 0 1 0 0 0    1 1 0 1 1 0 0 0

      

      

(MOV 

(MOV 

AL,BL) 

AL,BL) 

W

W

R/M

R/M

REG

REG

D

D

MO

MO

D

D

KOD 

KOD 

OPER.

OPER.

KOD ROZKAZU

KOD ROZKAZU

background image

                                                                               

                                                                               

a rodzaj 

a rodzaj 

adresowania na operacje na rejestrach

adresowania na operacje na rejestrach

                                                                                         

                                                                                         

rejestrem

rejestrem

 

 

źródłowym rejestr CX 

źródłowym rejestr CX 

Przykład  identyfikacji  rozkazu

Przykład  identyfikacji  rozkazu

:  W  pamięci  rozpoznano  kod 

:  W  pamięci  rozpoznano  kod 

rozkazu

rozkazu

1 0 0 0 1 0  0 1

1 0 0 0 1 0  0 1

 

 

1 1 0 0 1 0 0 0

1 1 0 0 1 0 0 0

Jest to rozkaz dwubajtowy, który można zapisać dwójkowo

Jest to rozkaz dwubajtowy, który można zapisać dwójkowo

Kod operacji wskazuje na rozkaz przesłania MOV

Kod operacji wskazuje na rozkaz przesłania MOV

W

W

R/M

R/M

REG

REG

D

D

MO

MO

D

D

KOD 

KOD 

OPER.

OPER.

Możemy w nim 

Możemy w nim 

zidentyfikowa

zidentyfikowa

ć

ć

Rodzaj argumentu W na operacje na słowach 

Rodzaj argumentu W na operacje na słowach 

Stąd też rejestrem przeznaczenia jest AX (akumulator) 

Stąd też rejestrem przeznaczenia jest AX (akumulator) 

REJ - identyfikator rejestru

REJ - identyfikator rejestru

W=1:

W=1:

W=0:

W=0:

000 - AX

000 - AX

000 - AL

000 - AL

001 - CX

001 - CX

001 - CL

001 - CL

010 - DX

010 - DX

010 - DL

010 - DL

011 - BX

011 - BX

011 - BL

011 - BL

100 - SP

100 - SP

100 - AH

100 - AH

101 - BP

101 - BP

101 - CH

101 - CH

110 - SI

110 - SI

110 - DH

110 - DH

111 - DI

111 - DI

111 - BH

111 - BH

Czyli poszukiwany rozkaz to MOV 

Czyli poszukiwany rozkaz to MOV 

AX,CX 

AX,CX 

KOD ROZKAZU

KOD ROZKAZU

background image

DZIĘKUJĘ ZA UWAGĘ ! 

DZIĘKUJĘ ZA UWAGĘ ! 


Document Outline