background image

Wykład  

 

Temat: 

Model programowy komputera I:  

format rozkazów, lista rozkazów, tryby adresowania. 

 

Zawartość wykładu: 

1. Pojęcie modelu programowego komputera 

2. Format słowa rozkazu wewnętrznego 

3. Lista rozkazów wewnętrznych komputera 

4. Tryby adresowania danych i rozkazów  

5. Przykład formatu słowa rozkazowego współczesnego procesora 

background image

 

Pojęcie modelu programowego komputera 

 

Model programowy komputera wyjaśnia sposób wykonywania programu w 
komputerze.  

Jest to zbiór informacji o komputerze, który jest potrzebny do zrozumienia działania 
programów użytkowych w języku wewnętrznym komputera ( tym samym napisania 
takich programów).  

Model programowy komputera, który obejmuje sposób działania wszystkich rozkazów 
wewnętrznych komputera (całą listę rozkazów) jest równoważny architekturze 
komputera.  

Model programowy komputera obejmuje model programowy procesora i model 
współpracy z urządzeniami zewnętrznymi. 

background image

 

 

Model programowy komputera opiera się o znajomość podstawowego schematu 
blokowego procesora oraz schematu podłączenia do procesora pamięci operacyjnej i 
układów wejścia/wyjścia.  

Znajomość podstawowego schematu blokowego procesora i komputera jest niezbędna 
dla zrozumienia formatu i listy rozkazów wewnętrznych.  

background image

Uproszczony schemat blokowy mikroprocesora 8-bitowego 

 

 

Rejestr rozkazów 

(RR) 

Dekoder rozkazów 

Generator 

sygnałów 

sterujących 

Selektor rejestru 

Rejestr danych (B) 

Licznik rozk. (LR) 

Układ 

nastêpnika 

ALU 

Akumulator (A) 

Rejestr warunków 

Wewnętrzna szyna sterowania 

Wewnętrzna szyna adresowa 

Zespół rejestrów 

uniwersalnych 

i specjalnych 

Układ sterowania 

Rej. adresowy 

Taktowanie 

Przerwania 

R

ej

es

tr

 b

u

fo

ro

w

da

ny

ch

 (

R

B

D

R

ej

es

tr

 b

u

fo

ro

w

ad

re

su

 (R

B

A

Sprzężenie z szynami 

zewnętrznymi 

Wewnętrzna szyna danych 

Zewnętrzna 

szyna 

sterowania 

Zewnętrzna 

szyna 

adresowa 

Zewnętrzna 

szyna 

danych 

Układ arytmetyczno – logiczny (ALU) 

Rej. stanu proc. 

Rej. wsk. proc. 

 

background image

 

Na schemacie blokowym procesora (mikroprocesora) wyróżnione są cztery 
podstawowe podzespoły:  

• 

układ sterowania,  

• 

zespół rejestrów uniwersalnych i specjalizowanych,  

• 

układ arytmetyczno-logiczny  

• 

układ sprzężenia z zewnętrzną szyną systemową.  

Te podzespoły podłączone są do trzech szyn procesora: wewnętrznej szyny danych
szyny adresowej i szyny sterującej.  

Poprzez rejestr buforowy danych i rejestr buforowy adresów, szyna danych i szyna 
adresowa wraz z szyną sterującą wychodzą na zewnątrz procesora by stworzyć tam 
zewnętrzne szyny, do których podłącza się bloki pamięci operacyjnej i układy 
wejścia/wyjścia. 

background image

 

Na schemacie występuje jeden wykonawczy układ arytmetyczno-logiczny z 
rejestrem bitów warunków, wytwarzanych przez testy wyniku operacji arytmetycznej: 
wynik zerowy, wynik z nadmiarem, wynik z przeniesieniem, wynik ujemny, wynik w 
podwójnej precyzji, itp.  

W bardziej rozbudowanych procesorach występuje więcej układów wykonawczych, 
identycznych lub wyspecjalizowanych dla określonych operacji np. przesuwanie, 
porównywanie, mnożenie, dzielenie, operacje zmienno-przecinkowe, operacje na 
adresach itp., które są równolegle podłączone do szyn wewnętrznych. 

Zespół rejestrów uniwersalnych zawiera pewną liczbę rejestrów wykorzystywanych 
dla przechowywania danych.  

Rejestry specjalne zawierają rejestry adresowe, rejestr wskaźnika stosu i rejestr stanu.   

Zespół rejestrów adresowych jest wykorzystywany w operacjach modyfikacji adresu 
zawartego w rozkazie.  

background image

 

 

Rejestr rozkazów należący do układu sterowania przechowuje słowo rozkazu 
wewnętrznego podczas wykonania.  

Słowo rozkazu jest dekodowane przez dekoder rozkazu. W wyniku dekodowania, 
kody binarne operacji zawarte w słowie rozkazu zostają zamienione na sygnały 
logiczne, które podawane są do generatora sygnałów sterujących. 

Generator sygnałów sterujących realizuje kombinacje logiczne tych sygnałów z 
innymi sygnałami, takimi jak sygnały taktujące, wartości warunków i stany przerwań. 
W wyniku tych kombinacji logicznej powstają sygnały sterujące, które są 
rozprowadzane poprzez szynę sterującą do wszystkich elementów wykonawczych 
komputera. 

background image

Format słowa rozkazu wewnętrznego 

 

Budowę słowa rozkazu wewnętrznego i sposób dekodowania określa tzw . format 
rozkazu 
(ang. instruction format).  

Format rozkazu podaje długość słowa rozkazu, podział na pola bitowe oraz sposób 
interpretacji
 (traktowania) poszczególnych pól. 

 

Pola bitowe słowa rozkazowego służą do: 

• 

zakodowania w nich operacji do wykonania w rozkazie 

• 

zakodowania sposobu dekodowania rozkazu 

• 

umieszczenia bitów danych. 

background image

Najprostszy format rozkazu składa się z dwu pól: 

• 

pola części operacyjnej 

• 

pola części adresowej. 

 

 

Część

 

operacyjna

 

Część

 

adresowa

 

Bity określające 

adres podzespołów 

mikroprocesora 

Bity określające 

operacje podzespołów 

mikroprocesora 

 

Najprostszy format rozkazu 

background image

Słowo rozkazowe w komputerze może mieć stałą lub zmienną długość.  

Długość słowa rozkazowego zależy od jego części operacyjnej i może być określona 
dopiero po jej zdekodowaniu. 

 

 

Kod operacyjny 

Operand 

 

 

Kod operacyjny 

Adres operandu 

 

 

Kod operacyjny 

Adres operandu 

Adres operandu 

7 0 

 

 

Stała i zmienna długość słowa rozkazu. 

   

background image

 

Część operacyjna może składać się z jednego lub wielu pól.   

W każdym polu zakodowano binarnie wykluczające się operacje, które mają być 
wykonane w ramach danego rozkazu. 

W polu części adresowej umieszczone być mogą adresy argumentów operacji z części 
operacyjnej ( binarne numery komórek pamięci albo rejestrów) albo też tzw. 
argumenty natychmiastowe czyli dane binarne, bezpośrednio użyteczne dla operacji 
rozkazu. 

 

 

Pole A 

Pole B 

Pole C 

Ciąg bitów 

Część operacyjna 

Część adresowa 

 

 

Budowa słowa rozkazowego 

background image

 

Format rozkazu może być stały lub zmienny.  

Przy stałym formacie, długość i podział na pola jest identyczny dla wszystkich 
rozkazów wewnętrznych komputera.  

Dekodowanie wszystkich pól słowa rozkazowego może odbywać się jednocześnie, tzn. 
wszystkie bity są podane na wejścia wszystkich dekoderów pól.  

Strukturę dekodera rozkazu stanowi wiele dekoderów pól pracujących równolegle 
(każde wytwarza jeden sygnał aktywujący jakąś operację w komputerze). 

background image

Sposób dekodowania rozkazu o stałym formacie 

 

 

Pole A 

Pole B 

Pole C 

Ciąg bitów 

Część operacyjna 

Część adresowa 

DekA 

DekB 

DekC 

 

 

background image

 

Przy zmiennym formacie rozkazu, zarówno długość słowa rozkazu jak i sposób 
podziału na pola są różne dla różnych rozkazów.  

Przy zmiennym formacie rozkazu, dekodowanie rozkazu następuje stopniowo, jedna 
faza dekodowania po drugiej.  

W każdej fazie dekoduje się ustalone pola rozkazu. Wartości kodu w tych polach 
decydują o tym jakie pola dekodować w następnej fazie, a więc na wejścia jakich 
dekoderów dopuścić bity kolejne dekodowane w następnej fazie.  

Przy stwierdzeniu odpowiednich kodów w odpowiednich polach, dekodowanie 
bieżącego rozkazu ustaje i pobierany jest nowy rozkaz (poprzez odpowiednie sygnały 
z generatora sygnałów sterujących).  

Strukturę dekodera stanowi drzewo dekoderów z bramkami dopuszczającymi 
odpowiednie bity do odpowiednich dekoderów. 

background image

Sposób dekodowania rozkazu o zmiennym formacie 

 

 

Ciąg bitów 

Część operacyjna 

Część adresowa 

Faza I 

Faza II 

Faza II 

Selektor 

Selektor 

Faza III 

Faza III 

Selektor 

Selektor 

Faza II 

Faza III 

Faza I 

 

background image

Lista rozkazów komputera 

 

W komputerze o modelu von Neumana, wykonanie wszelkich programów (nawet 
napisanych w językach wysokiego poziomu) sprowadza się do wykonania ciągu 
rozkazów wewnętrznych składających się na program.  

Rozkazy wewnętrzne wyrażają prawie wszystkie operacje, które komputer może 
wykonać. Nie dotyczy to operacji, które nie są programowalne przez użytkownika 
komputera, tzn. jak to się mówi „są zaszyte lub zrealizowane w sprzęcie (ang. 
hardwired)”, np. obsługa przerwań, obsługa pamięci podręcznej. 

 

Zbiór wszystkich rozkazów wewnętrznych, w które wyposażono dany komputer , 
rozumiany jako zbiór operacji tych rozkazów, nazywamy listą rozkazów komputera 
(ang. computer instruction list lub computer instruction set). 

background image

Typy rozkazów wewnętrznych komputera 

 

Ze względu na rodzaj operacji wykonywanej w rozkazie wyróżniamy następujące typy 
rozkazów wewnętrznych komputera: 

• 

rozkazy arytmetyczno-logiczne 

• 

rozkazy przesyłania danych 

• 

rozkazy operacji na bitach 

• 

rozkazy sterujące programem 

• 

rozkazy systemowe. 

background image

 

W rozkazie wewnętrznym jest zawsze określona operacja, która ma być wykonana.  

W zależności od konkretnego rozkazu mogą tam być też podane:  

• 

adresy argumentów operacji,  

• 

tryb adresowania czyli sposób wyliczenia finalnego adresu argumentów operacji na 
podstawie adresu zawartego w rozkazie (możliwa jest modyfikacja adresu przy 
użyciu informacji zapamiętanych w komputerze danych),  

• 

dane natychmiastowe.  

background image

 

Rozkazy wewnętrzne mają postać bardzo niewygodną dla człowieka.  

Aby ułatwić pisanie programów niskiego poziomu przez programistów wprowadzono 
symboliczne języki programowania tzw. języki asemblerowe. 

W językach asemblerowych program wyraża się w postaci instrukcji 
odpowiadających rozkazom języka wewnętrznego zapisanych symbolicznie

Rozkaz asemblera zawiera: 

• 

symbol operacji wykonywanej przez rozkaz (skrót – mnemonik),  

• 

symbol trybu adresowania, wartości i symboli adresów używanych przez rozkaz 
(etykiety)  

• 

symbole i wartości danych (stałe i zmienne).  

Wartości adresów i danych mogą być zapisywane w różnych zapisach: dziesiętnym, 
szesnastkowym, ósemkowym lub binarnym. lecz zawsze z określeniem rodzaju 
użytego zapisu (identyfikator). 

background image

Typy rozkazów wewnętrznych na przykładzie komputerów 
personalnych typu IBM PC. 

 

Rozkazy arytmetyczno-logiczne  

 

Rozkazy arytmetyczno logiczne składają się trzech podstawowych grup rozkazów:  

• 

rozkazy arytmetyczne,  

• 

logiczne 

• 

przesunięć

background image

Rozkazy arytmetyczne 

 

ADD         Obliczenie sumy argumentów (od ang. addition). 

SUB          Obliczenie różnicy argumentów (od ang. subtraction). 

MUL         Obliczanie iloczynu z podwójną lub pojedynczą dokładnością 

                  (od ang. multiplication). 

DIV           Obliczenie ilorazu (od ang. division). 

ABS          Obliczenie wartości bezwzględnej (od ang. absolute value). 

NEG          Zmiana znaku liczby (od ang. negate sign). 

INC            Zwiększ o 1 (od ang. increment). 

DEC           Zmniejsz o 1 (od ang. decrement). 

background image

 

Rozkazy logiczne 

 

AND         Wykonanie operacji AND na argumentach. 

OR            Wykonanie operacji OR na argumentach. 

EXOR       Wykonanie operacji EXOR na argumentach. 

NOT          Wykonanie operacji NOT na argumentach. 

background image

 

Rozkazy przesunięć 

 

SHL/SHR     Przesunięcie logiczne w lewo / w prawo. 

                     (od ang. shift left / shift right). 

SAL/SAR     Przesunięcie arytmetyczne w lewo / w prawo. 

                      (od ang. shift arithmetical left / shift arithmetical right). 

ROL/ROR    Wykonanie rotacji w lewo / w prawo. 

                      (od ang. rotate left / rotate right). 

background image

Rozkazy przesyłania danych 

 

MOV          Przesłanie danych między rejestrami lub między rejestrem a pamięcią  

                   (od ang. move). 

STR            Przesłanie danych między pamięcią  a rejestrem. 

                   (od ang. store). 

MOVSX      Przesłanie bajtu, słowa, podwójnego słowa z rozszerzeniem znaku.  

                    (od ang. move single/double). 

LEA            Ładowanie adresu efektywnego z pamięci do rejestru 

                   (od ang. load efective address).  

PUSH         Umieszczenie danych z rejestru na stosie. (wepchnij) 

PUSHA       Umieszczenie zawartości wszystkich rejestrów na stosie  

                    (wepchnij wszystkie). 

IN, OUT      Wejście, wyjście danych z urządzeń wejścia-wyjścia 

background image

Rozkazy operacji na bitach 

 

BTS          Testowanie i ustawienie bitu. Kopiowana jest bieżąca wartość bitu do 

znacznika CF, a bit jest ustawiany na l. (od ang. bit test). 

BSP          Sprawdzanie bitów w przód. Sprawdzane jest słowo lub podwójne słowo w 

poszukiwaniu bitu l a numer pierwszego bitu l jest zapisywany w rejestrze  
(od ang. bit set prime). 

CLR         Wyzeruj zawartość rejestru. (od ang. clear). 

SET          Wstaw same jedynki do rejestru (ustaw na 1). 

background image

Rozkazy sterujące programem 

JMP           Skok bezwarunkowy (od ang. jump). 

JE/JZ         Skok warunkowy, jeśli równy (lub jeśli zero) 

                  (od ang. jump if equal, jump if zero). 

CALL        Wywołanie podprogramu (wywołaj). 

RET           Powrót z podprogramu (od ang. return). 

LOOPE/ LOOPZ     Wykonanie pętli, jeśli równy /jeśli zero,  

                     skok warunkowy z badaniem zawartości w rejestru ECX po 

dekrementacji. (od ang. loop if equal, loop if zero). 

INT / INTO     Przerwanie programowane / przerwanie w razie nadmiaru. 

                       (od ang. interrupt, interrupt if overflow). 

SKIP              Pominięcie wykonania następnego rozkazu rozkazu (przeskocz). 

HALT             Zatrzymaj wykonywanie programu

background image

Rozkazy systemowe 

 

LMSW       Ładowanie słowa stanu procesora do rejestru stanu z pamięci lub rejestru, 

                   przełącz do trybu syst. operacyjnego 

(od ang. load machine status word register).

 

SGDT        Zapisanie wskaźnika globalnej tablicy deskryptorów w pamięci 

                   (od ang. store global descriptor table register).  

LGDT        Ładowanie wskaźnika globalnej tablicy deskryptorów z pamięci 

                   (od ang. load global descriptor table register).  

LSL           Ładowanie granicy segmentu do rejestru. (od ang. load segment limit).  

LDS           Ładowanie z pamięci rejestru wskaźnika segmentu DS (od ang. load DS). 

ENTER      Utworzenie w stosie ramki dla parametrów procedury z języka wysokiego 

                  poziomu 

ESC            Skierowanie programu do koprocesora numerycznego (od ang. escape). 

WAIT        Czekaj na zmianę stanu wejścia BUSY (czekaj) 

background image

Tryby adresowania danych i rozkazów

 

 

Bardzo często zawartość pola adresowego rozkazu nie jest bezpośrednio użyta jako 
adres danej lub rozkazu lecz procesor wykonuje na nim tzw. operacje adresujące 
(ang. addressing operations) , które przekształcają zawartość pola adresowego zanim 
zostanie wykorzystana jako ostateczny adres argumentu rozkazu. 

Rodzaj operacji, którą procesor wykonuje na zawartości pola adresowego rozkazu jest 
nazywany trybem adresowania (ang. addressing mode).  

Tryb adresowania dla rozkazu jest zwykle określony w jednym lub kilku polach 
należących do pola kodu operacji rozkazu.  

W niektórych przypadkach rozkazów, tryb adresowania wynika bezpośrednio z kodu 
operacji rozkazu. 

background image

Podstawowe tryby adresowania 

 

Adresowanie natychmiastowe 

 

 

Kod operacji

 

Operand

 

 

 

 

trybie natychmiastowym pole adresowe zawiera bezpośrednio operand (ang. 
operand) czyli daną dla rozkazu. Długość operandu zależy od kodu operacji lub od 
kodu operacji i dodatkowego pola sterującego w rozkazie.  

Ten tryb adresowania stosujemy, gdy np. chcemy bezpośrednio z rozkazu ( bez 
odwoływania się do pamięci) załadować do rejestru prostą daną – bajt lub parę bajtów. 

background image

 

Adresowanie bezpośrednie (bezwzględne) 

 

 

Kod operacji 

Adres 

Operand 

Pamięć 

 

 

background image

 

Adresowanie bezpośrednie jest najbardziej podstawowym trybem adresowania. W 
tym trybie zawartość pola adresowego stanowi już finalny adres argumentu rozkazu w 
pamięci operacyjnej i nie podlega przekształceniu. 

Ten tryb stosujemy, gdy nie zależy nam na tym, aby nasz program był przesuwalny w 
pamięci operacyjnej, lecz jest przeznaczony do wykonania przy zapisie w ściśle 
określone miejsce w pamięci. 

background image

 

Adresowanie pośrednie 

 

 

Kod operacji 

Adres pośredni 

Adres 

Pamięć 

Operand 

 

 

background image

 

Przy adresowaniu pośrednim  rozkaz zawiera adres komórki pamięci operacyjnej, w 
której zawarty jest finalny adres operandu rozkazu.  

W tym przypadku komórka pamięci wskazana przez adres rozkazu pośredniczy w 
określeniu finalnego adresu.  

Tryb pośredni stosujemy, gdy chcemy, aby finalny adres operandu rozkazu mógł być 
dynamicznie wstawiony do komórki pośredniczącej w adresowaniu w czasie 
wykonywania programu.  

Może tak być, gdy ten adres zależy od jakichś testów na wyniku operacji 
poprzedzającego rozkazu.  

background image

 

Adresowanie indeksowe 

 

 

Kod operacji 

Adres bazowy 

Pamięć 

Operand 

Przesunięcie 

Przesunięcie 

Rejestr indeksowy 

 

background image

 

Adresowanie indeksowe jest inaczej nazywane modyfikacją adresu przez 
indeksowanie
.  

W tym trybie wykorzystuje się specjalne rejestry procesora tzw. rejestry indeksowe 
(ang. index registers), które zawierają przesunięcie, który trzeba dodać do adresu 
istniejącego w rozkazie aby wyliczyć adres finalny operandu.  

Ten tryb adresowania pozwala przesunąć adres zawarty w rozkazie o wartość rejestru 
indeksowego.  

Używając tego trybu we wszystkich rozkazach programu, można osiągnąć możliwość 
wykonania programu przy załadowaniu w dowolne miejsce pamięci.
 W tym celu 
należy napisać program wstawiając do rozkazów programu adresy, które odpowiadają 
umieszczeniu pierwszej instrukcji programu pod adresem zerowym w pamięci. 
Następnie wiedząc, pod jakim finalnym adresem jest umieszczony pierwszy rozkaz 
programu, umieszczamy ten adres w rejestrze indeksowym.  

background image

 

Dzięki operacji indeksowania rozkazów programu, wszystkie adresy operandów 
zostaną przesunięte o tę sama wartość – stad nazwa zawartości rejestru indeksowego : 
przesunięcie.  

Taka organizacja przesuwalności programu w pamięci nosi nazwę dynamicznej 
relokacji programu w pamięci

Rejestrów indeksowych w procesorze jest zwykle wiele, gdyż mogą one być 
przydzielone różnym programom lub fragmentom programów, które są wykonywane 
w tym samym okresie czasu.  

Rejestr indeksowy do użycia,  może być określony przy pomocy specjalnego pola 
wspomagającego kodowanie trybu adresowania w innym polu rozkazu. 

background image

 

Adresowanie względne 

 

 

Licznik rozkazów 

Kod operacji 

Przesunięcie 

Następna instrukcja 

Operand 

P

rzesuni

ęci

 

 

background image

 

Adresowanie względne polega na modyfikacji adresu zawartego w rozkazie przez 
aktualną zawartość licznika rozkazów.  

Ten tryb adresowania dostarcza innego sposobu osiągnięcia dynamicznej 
przesuwalności adresów dostępu do danych, tj. gdy nie chcemy lub nie możemy znać 
przesunięcia całości programu w stosunku do adresu zerowego.  

Przy adresowaniu względnym, finalny adres danej jest wyliczany względem bieżącej 
zawartości licznika rozkazów, a więc do rozkazu wstawiamy przesunięcie danej w 
programie względem adresu następnego rozkazu, np. n komórek w przód lub w tył. 
Musimy tylko zapewnić, aby dana została umieszczona w spodziewanym miejscu 
pamięci,  a ściślej w spodziewanej odległości od rozkazu, który z tej danej korzysta. 

Można to osiągnąć przez zaplanowanie w jakiej odległości od danego rozkazu, będzie 
umieszczony obszar danych programu. 

background image

 

Adresowanie pośrednie indeksowe 

 

 

Kod operacji 

Adres pośredni 

Adres bazowy 

Operand 

Pamięć 

Rejestr indeksowy 

 

background image

 

Adresowanie pośrednie indeksowe zapewnia jednoczesną możliwość zastosowania w 
programie adresowania pośredniego z modyfikacją adresu odczytanego z komórki 
pośredniczącej poprzez zawartość rejestru indeksowego.  

Umieszczony w rozkazie adres wskazuje na komórkę przechowującą adres danej, 
który może być tam wstawiany dynamicznie jako wynik obliczeń programu. Do tego 
adresu stosowane jest następnie indeksowanie  poprzez zawartość rejestru 
indeksowego.  

Zawartość rejestru indeksowego może też być wstawiona dynamicznie w wyniku 
działania innej części programu. W zależności od zawartości rejestru indeksowego 
trafiamy zatem do innej komórki zawierającej operand. 

Adresowanie pośrednie indeksowe pozwala na dwupoziomowe dynamiczne określanie 
adresu danych w wyniku obliczeń wykonanych w poprzedzających fragmentach 
programu, metodą wpisania pewnego adresu bazowego a następnie modyfikacji tego 
adresu bazowego przez rejestr indeksowy. 

background image

 

Adresowanie indeksowe pośrednie 

 

 

Kod operacji 

Adres bazowy 

Adres 

Operand 

Pamięć 

Przesunięcie 

Rejestr indeksowy 

 

 

background image

 

Adresowanie indeksowe pośrednie zapewnia najpierw modyfikację adresu zawartego 
w rozkazie przez zawartość rejestru indeksowego a następnie tak otrzymany adres jest 
stosowany do wskazania komórki pamięci, w której jest przechowywany finalny adres 
operandu rozkazu.  

Adresowanie indeksowe pośrednie pozwala na dynamiczne określanie adresów 
danych
 w programie w czasie wykonania programu, przy zapewnieniu przesuwalności 
w pamięci całego programu.  

background image

 

Dla dynamicznego określanie adresów danych w programie, program piszemy 
począwszy od adresu zerowego w pamięci stosując adresowanie indeksowe do 
wszystkich rozkazów z wyjątkiem tych, które działają na danych wybieranych 
dynamicznie.  

Te rozkazy adresujemy poprzez użycie adresowania pośredniego indeksowego, 
umieszczając adres komórki pośredniczącej (względem adresu zero) w bieżącym 
rozkazie.  

Po załadowaniu programu do pamięci, wpisywana jest do rejestru indeksowego 
wartość przesunięcia początku programu w stosunku do adresu zerowego ( robi to 
program ładujący).  

W trakcie wykonywania programu wszystkie adresy programu , łącznie z tymi, gdzie 
zastosowano adresowanie pośrednie  oraz tymi. które wpisują adres danej do komórki 
pośredniczącej, zostaną zmodyfikowane. 

background image

Adresowanie rejestrowe 

 

 

Kod operacji 

Numer rejestru 

Zespół 

rejestrów 

Operand 

Mikroprocesor 

 

 

Adresowanie rejestrowe stosuje się, gdy dana dla rozkazu jest przechowywana w 
rejestrze. Część adresowa rejestru zawiera wtedy jedno lub więcej pól, w których 
znajdują się identyfikatory rejestrów. Adresowanie rejestrowe jest często stosowane w 
tym samym rozkazie razem z innymi trybami adresowania dotyczącymi pamięci 
operacyjnej. Wówczas rozkaz dotyczy zarówno pamięci operacyjnej jak i rejestrów 
procesora. 

background image

 

Adresowanie pośrednie rejestrowe 

 

 

Kod operacji 

Numer rejestru 

Zespół 

rejestrów 

Adres 

Mikroprocesor 

Operand 

Pamięć 

 

 

Adresowanie pośrednie rejestrowe polega na tym, że jako miejsce pobrania 
finalnego adresu operandu rozkazu stosuje się rejestr procesora, którego identyfikator 
umieszczony jest w polu adresowym rozkazu. 

background image

 

 

Przy pomocy trybu adresowania pośredniego rejestrowego można dynamicznie 
określić finalny adres operandu poprzez odpowiednie załadowanie zawartości rejestru, 
w zależności od przebiegu obliczeń w programie. 

background image

Przykład formatu słowa rozkazu wewnętrznego procesora Pentium 

 

Kod operacji

MOD/RM

Sterowanie
modyfikacją

Przesunięcie

Natychmiastowy

Bajty

1 lub 2

0 lub 1

0 lub 1

0, 1, 2 lub 4

0, 1, 2 lub 4

Modyfikacja

Rejestr/Operacja

Rejestr/Operacja

Skala

Rejestr indeksowy

Rejestr bazowy

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

 

 

Pole „Kod operacji” o długości 1-2 bajtów określa operację podstawowa wykonywaną 
w rozkazie. Pola „MOD/RM” oraz „ Sterowanie modyfikacją” , o długości 0-1 bajt 
każde, określają tryb i szczegóły modyfikacji adresu wykonywanej na adresach 
argumentu (ów). Pole „Przesunięcie” zawiera przesunięcie adresu, o ile pola związane 
z modyfikacją wskazują na użycie przesunięcia dla określenia adresu argumentu (ów). 
Pole „Natychmiastowy” zawiera dane o długości 1-4 bajtów, o ile pola związane z 
modyfikacją wskazują na użycie argumentu natychmiastowego.