background image

1

1

Architektura listy instrukcji – ISA

2

Zbiór poleceń (instrukcji) zrozumiałych dla CPU

lista instrukcji powinna być 

funkcjonalnie pełna

, tzn. 

umożliwiać zapis dowolnego algorytmu

Instrukcje są zapisywane w postaci binarnej

każda instrukcja ma swój unikatowy kod binarny (kod 
operacji)

W programach źródłowych zapisanych w języku 
asemblera zamiast kodów binarnych stosuje się 
zapis symboliczny operacji

np. addmov

Program źródłowy jest tworzony przy użyciu 
edytora tekstu jako plik ASCII

Lista instrukcji

background image

2

3

1.

Kod operacji (op code), określa czynność wykonywaną 
przez instrukcję

2.

Wskazanie na argument źródłowy (source operand)

3.

Wskazanie na argument docelowy (destination operand)

4.

Wskazanie na kolejną instrukcję programu, która ma być 
wykonana jako następna

Przykład:     mov  a,r0     ;prześlij r0 do a

Elementy instrukcji

Mnemonik

(rodzaj operacji)

Argument źródłowy

Argument

docelowy

Element 1) jest obligatoryjny, elementy 2) – 4) są opcjonalne

4

Reprezentacja instrukcji

Postać symboliczna (język asemblera)

mov  a,r0

Zapis funkcjonalny

a   r0

Postać binarna w pamięci programu (x51)

11101000

w postaci binarnej kod operacji jest zapisywany jako 

pierwszy, dalej następują argumenty (w tym przypadku 
informacja o argumentach jest zawarta w kodzie 
operacji)

background image

3

5

Reprezentacja instrukcji 

cd.

Przykład (x51)

Zapis symboliczny

add a,#3ch

Zapis funkcjonalny

(a)  (a)+#3ch

Opis słowny: dodaj liczbę 3c w kodzie szesnastkowym do 
zawartości akumulatora

Postać instrukcji w pamięci:

Kod operacji ADD

Dodajnik  3CH

Adres x

Adres x+1

Następna  instrukcja

P oprzednia instrukcja

0  0  1  0  0  1   0  0

0  0  1  1  1   1  0  0

 . . .

 . . .

6

Istotnym czynnikiem przy projektowaniu ISA jest liczba 
argumentów (lub odniesień do argumentów) zawartych w 
instrukcji

wpływ na długość słowa instrukcji oraz złożoność CPU

duża liczba argumentów wymaga długiego słowa instrukcji

Rozważmy, ile argumentów wymaga instrukcja 
dodawania ADD

jeśli chcemy dodać do siebie zawartość dwóch komórek pamięci 
potrzebujemy 

dwóch

adresów

gdzie umieścić wynik dodawania? Potrzebny jest 

trzeci

adres

która instrukcja w programie ma być wykonana jako następna?

zwykle domyślnie przyjmuje się, że będzie to kolejna instrukcja w 
programie, ale czasem chcemy wykonać skok w inne miejsce 
programu
do wskazania miejsca skoku potrzebny jest 

czwarty

adres

Liczba argumentów

background image

4

7

Liczba argumentów 

cd.

W praktyce procesory czteroadresowe nie są 
stosowane

zbyt skomplikowana budowa CPU

długie słowo instrukcji

nie zawsze instrukcja wymaga aż czterech adresów

Większość instrukcji wymaga jednego, dwóch 
lub najwyżej trzech adresów

adres kolejnej instrukcji w programie jest określany 
przez inkrementację licznika rozkazów (z wyjątkiem 
instrukcji skoków)

8

Więcej adresów

bardziej skomplikowane,  ale też wygodne w użyciu 
instrukcje

dłuższe słowo instrukcji

większa liczba rejestrów

operacje na rejestrach są szybsze niż operacje na zawartości 
pamięci

krótsze programy (w sensie liczby instrukcji)

Mniej adresów

mniej skomplikowane instrukcje

dłuższe programy (w sensie liczby instrukcji)

krótszy cykl pobrania instrukcji

Większość współczesnych procesorów stosuje 
architekturę 

2-adresową (x51, x86)

3-adresową (MIPS)

Liczba adresów – wnioski

background image

5

9

Reprezentacja instrukcji 

cd.

Typowy format instrukcji z odniesieniami do dwóch 
argumentów (architektura dwuadresowa)

Kod operacji

Argument 1

Argument 2

Binarny kod 
operacji określający 
jednoznacznie 
rodzaj rozkazu; 
zdeterminowany 
przez mnemonik 
instrukcji (np. MOV, 
ADD itp.)

Odniesienie do 
argumentu nr. 1
• jawnie (wprost)  

podana wartość 
argumentu lub

• adres lub
• inne wskazanie na 

argument

Odniesienie do 
argumentu nr. 2
• jawnie (wprost)  

podana wartość 
argumentu lub

• adres lub
• inne wskazanie na 

argument

10

Formaty instrukcji 

(x51)

a)

b)

Format 1 -bajtowy

16-b itowy operand
16-b itowy adres argumentu
8-bitowy adres i 8-bit owy operand

bajt B0

bajt B1

bajt B2

Kod oper acji

0  1  0  0  1   0  0  1

ORL   A,R1

(A)        (A) v (R1)

(A)         (A) v #0FH

(3FH)        (3FH) v #0FH

ORL  A,#0FH

ORL  3FH,#0FH

Kod oper acji

0   1  0  0  0  1  0   0

Kod oper acji

0  1  0  0   0  0  1  1

0  0  1  1  1  1   1  1

Operand  lub adres

0  0  0  0  1  1  1  1

0  0  0   0  1  1  1  1

Format 2 -bajtowy

Format 3 -bajtowy

background image

6

11

Tryby adresowania argumentów

Tryb adresowania – sposób wskazania na 
argumenty instrukcji
Liczba i rodzaje trybów adresowania są różne 
dla różnych typów mikroprocesorów
Najważniejsze tryby adresowania

rejestrowe, zwane też implikowanym lub 
wewnętrznym (ang. register, implied, inherent)

natychmiastowe (ang. immediate)

bezpośrednie (ang. direct)

pośrednie (ang. indirect)

indeksowe (ang. indexed)

względne (ang. relative)

12

Adresowanie rejestrowe

0  0  1  0  1  0  0  1

Akumulator

Rejestr R1

ADD  A,R1

(A)        (A) + (R1)

Kod rozkazu

background image

7

13

Adresowanie natychmiastowe

0  0  1  0  0  1  0  0

dana

Akumulator

ADD  A,#dana

Kod rozkazu

(A)        (A) + #dana

14

Adresowanie bezpośrednie

0  0  1  0  0  1  0  0

a dres 8-bitowy

Operand

00

FF

256 bajtó w

RAM

. . .

. . .

Akumula tor

Wewnętrzna p amięć

danych

ADD  A,adre s

Kod rozkazu

(A)        (A) + (direct)

Długość adresu bezpośredniego może być różna.

• Zależy to od typu procesora i rodzaju instrukcji
• Niektóre instrukcje mogą dopuszczać warianty instrukcji z 

adresem 8-, 16-, 32 – itd.. bitowym

background image

8

15

Adresowanie indeksowe

Operand

Przesunięcie

Przesunięcie

. . .

. . .

Rejestr indeksowy

Pamięć danych

Kod rozkazu

Adres

bazowy

B0

B1

B2

Uwaga: niektóre typy mikroprocesorów (np. x51) nie mogą 
realizować tego trybu adresowania

16

Adresowanie pośrednie

Operand

. . .

. . .

Pamięć

Kod rozkazu

Adres

pośredni

Adres efektywny

B0

B1

B2

Uwaga: odmianą adresowania pośredniego 
jest adresowanie zawartością rejestru lub 
rejestrów (pointer addressing)

background image

9

17

Adresowanie względne

Operand

. . .

. . .

. . .

Licznik programu

Pamięć programu

Kod rozkazu

Następny rozkaz

Przesunięcie

18

Jest używane przy dostępie do stosu

Przykłady

pop   psw

;pobierz słowo wskaźników 

(flagi) ze stosu

push  psw

;wyślij słowo wskaźników na 

stos

Adres szczytu stosu znajduje się w rejestrze 
wskaźnika stosu SP

Adresowanie stosu

background image

10

19

Data Transfer – przesyłanie danych (np. MOV)

Arithmetic – operacje arytmetyczne (np. ADD)

Logical – operacje logiczne (np. OR)

Conversion – konwersja danych, np. liczb binarnych na 
BCD

I/O – operacje wejścia/wyjścia

System Control

specjalne operacje systemowe, np. sterowanie stanem 
procesora, zarządzanie protekcją itp.

Transfer of Control (np. JMP)

skoki, wywołanie podprogramów itp..

Rodzaje instrukcji

20

Lista instrukcji

Każdy mikroprocesor ma własną, ustaloną przez 
producenta listę instrukcji
Liczba instrukcji zależy od architektury i stopnia 
złożoności procesora

Procesory RISC (np. PowerPC) realizują zwykle 
kilkadziesiąt instrukcji

Procesory CISC (np. Pentium) mają znacznie 
bogatszą listę instrukcji (kilkaset)

Najprostsze procesory CISC (np. x51) mogą realizować 
mniej rozkazów

Architektura listy rozkazów ma wpływ na 
budowę kompilatorów języków wysokiego 
poziomu