Download as pdf or txt
Download as pdf or txt
You are on page 1of 42

JOVAN OREVI

ARHITEKTURA
I
ORGANIZACIJA
RAUNARA


ARHITEKTURA RAUNARA


BEOGRAD, 2006.


















DJM

1
PREDGOVOR
Ova knjiga je napisana kao osnovni udbenik iz arhitekture i organizacije raunara i
pokriva osnovne koncepte iz arhitekture i organizacije procesora, memorije, ulaza/izlaza i
magistrale.
Sistemi.

Autor
Beograd
avgusta 2005.


3
SADRAJ
PREDGOVOR....................................................................................................................................................... 1
SADRAJ............................................................................................................................................................... 3
1 ARHITEKTURA RAUNARA.................................................................................................................. 7
1.1 ARHITEKTURA PROCESORA.......................................................................................................... 7
1.1.1 PROGRAMSKI DOSTUPNI REGISTRI .......................................................................................... 7
1.1.2 TIPOVI PODATAKA..................................................................................................................... 14
1.1.2.1 CELOBROJNE VELIINE.................................................................................................................14
1.1.2.2 VELIINE U POKRETNOM ZAREZU.............................................................................................15
1.1.2.3 ALFANUMERIKI NIZ .....................................................................................................................15
1.1.2.4 NUMERIKI NIZ ...............................................................................................................................15
1.1.3 FORMATI INSTRUKCIJA............................................................................................................. 17
1.1.3.1 OPERACIJA I TIP PODATKA...........................................................................................................17
1.1.3.2 IZVORINI I ODREDINI OPERANDI ............................................................................................18
1.1.3.3 SLEDEA INSTRUKCIJA.................................................................................................................19
1.1.4 NAINI ADRESIRANJA................................................................................................................ 19
1.1.5 SKUP INSTRUKCIJA.................................................................................................................... 20
1.1.5.1 STANDARDNE INSTRUKCIJE.........................................................................................................20
1.1.5.1.1 INSTRUKCIJE PRENOSA............................................................................................................20
1.1.5.1.2 ARITMETIKE INSTRUKCIJE....................................................................................................21
1.1.5.1.3 LOGIKE INSTRUKCIJE.............................................................................................................22
1.1.5.1.4 INSTRUKCIJE POMERANJA I ROTIRANJA.............................................................................22
1.1.5.1.5 INSTRUKCIJE SKOKA.................................................................................................................22
1.1.5.1.6 MEOVITE INSTRUKCIJE..........................................................................................................24
1.1.5.2 NESTANDARDNE INSTRUKCIJE....................................................................................................24
1.1.6 MEHANIZAM PREKIDA............................................................................................................... 33

4

5

7
1 ARHITEKTURA RAUNARA
U ovoj glavi se razmatraju elementi arhitekture raunara koju ine arhitektura procesora,
arhitektura memorije i arhitektura ulazno/izlaznog sistema.
1.1 ARHITEKTURA PROCESORA
Arhitekturu procesora ine programski dostupni registri, tipovi podataka, formati
instrukcija, naini adresiranja, skup instrukcija i mehanizam prekida.
1.1.1 PROGRAMSKI DOSTUPNI REGISTRI
Programski dostupni registri procesora su registri u koje je i iz kojih je mogue
programskom putem izvravanjem instrukcija procesora ili upisivati vrednosti ili oitavati
vrednosti. U instrukcijama kojima se pristupa ovim registrima se registar u koji treba upisati
ili iz koga treba oitati specificira ili eksplicitno nekim od adresnih polja instrukcije ili
implicitno kodom operacije instrukcije. Ovi registri su namenjeni da se u njih nekom od
instrukcija postavi neka vrednost, pa da se ta vrednost nekom kasnijom ili nekim kasnijim
instrukcijam ita. Ove registre treba razlikovati od registara procesora koje projektant
procesora ubacuje da bi prema nekom svom pristupu projektovanja procesora obezbedio
uvanje neophodnih sadraja prilikom prolaska kroz sve korake iz kojih se sastoji izvravanje
jedne instrukcije. Vrednost koja se u neki od ovih registara upisuju u nekom od koraka
izvravanja instrukcije koriste se u nekom ili nekim kasnijim koracima izvravanja te iste
instrukcije, ali ne neke od sledeih instrukcija. Upisivanje vrednosti u ove registre i itanje
vrednosti iz ovih registara je nemogue specificirati instrukcijama. To je odreeno usvojenim
algoritmima izvravanja svake instrukcije posebno.
Funkcije i broj programski dostupnih registara se razlikije od procesora do procesora. Ovde
se daju oni programski dostupni registri koji se esto sreu kod komercijalno raspoloivih
procesora i to programski broja PC, registri podataka DR, adresni registri AR, bazni registri
BR, indeksni registri XR, registri opte namene GPR, akumulator A, programska statusna re
PSW, ukaziva na vrh steka SP, ukaziva na okvir steka FP, ukaziva na listu argumenata AP,
registar maske IMR i ukaziva na tabelu adresa prekidnih rutina IVTP.
Programski broja PC je standardni programski broja procesora.
Registri podataka DR se koriste kod direktnog registarskog adresiranja. Njima se
programskim putem ubrzava pristup podacima, koji se na poetku nekog raunanja nalaze u
memorijskim lokacijama. Korienje registara podataka radi ubrzavanja pristupa podacima
ima smisla ukoliko se u toku nekog raunanja javi potreba da se via puta koristi neki
podatak. U ovom sluaju, mogue je, najpre, dati podatak, programskim putem izvravanjem
odgovarajue instrukcije, prebaciti iz memorijske lokacije u neki od registara podataka, a
zatim, kad god postoji potreba za datim podatkom, podatak itati iz registra podatka. Ubrzanje
se postie time to umesto da se svaki put kada postoji potreba za datim podatkom ide u
memorijsku lokaciju ide se u registar podatka. Pored toga mogue je meurezultate raunanja
ostavljati u registrima podataka, da bi kasnije, kada oni budu potrebni, njima moglo da se
pristupa itanjem odgovarajuih registara podataka. Ubrzanje se postie time to se
meurezultat ne smeta u memorijsku lokaciju i to kasnije kada postoji potreba za njim
umesto da se ide u memorijsku lokaciju ide se u registar podatka. Konane rezultate raunanja

8
treba na kraju, programskim putem izvravanjem odgovarajuih instrukcija, prebaciti iz
registara podataka u memorijske lokacije.
Ovaj pristup sa registrima podataka ima opravdanja iz dva razlog. Prvi je vremenski
lokalitet prilikom rada sa skalarnim veliinama. Ako se jedanput pristupilo nelom podatku
postoji potreba da se posle toga vie puta njemu pristupa. Drugi je sekvencijalna priroda
raunanja. Obino se tako rauna da se razultat jedne operacije koristi kao podatak za drugu
operaciju.
Adresni registri AR se koriste kod indirektnog registarskog adresiranja, preinkrement i
postdekrement naina adresiranja. Sadraj specificiranog adresnog registra predstavlja adresu
memorijske lokacije na kojoj se nalazi izvorini ili odredini operand u sluaju aritmetikih,
logikih ili pomerakih instrukcija ili adresu skoka u sluaju instrukcija skoka. Koristi se u
situacijama kad treba sa nekoliko instrukcija izraunati adresu elementa neke sloene
strukture podataka, pa onda u okviru aritmetike, logike ili pomerake instrukcije sa date
odrese proitati operand ili na datoj adresi upisati rezultat. Koristi se i u situacijama kad treba
sa nekoliko instrukcija izraunati adresu skoka, pa onda u okviru neke od instrukcija skoka
datu adresu upisati u programski broja PC.
Bazni registri BR se koriste kod baznih i bazno-indeksnih adresiranja. Zbir sadraja
specificiranog baznog registra i pomeraja kod baznih adresiranja, odnosno baznog registra,
indeksnog registra i pomeraja kod bazno-indeksnih adresiranja, predstavlja adresu memorijske
lokacije na kojoj se nalazi izvorini ili odredini operand.
Indeksni registri XR

se koriste kod indeksnih i bazno-indeksnih adresiranja, kao i kod
operacija nad nizovima alfanumerikih znakova. Zbir sadraja specificiranog indeksnog
registra i pomeraja kod indeksnih adresiranja, odnosno baznog registra, indeksnog registra i
pomeraja kod bazno-indeksnih adresiranja, predstavlja adresu memorijske lokacije na kojoj se
nalazi izvorini ili odredini operand.
Registri opte namene GPR se koriste kao registri podataka, adresni registri, bazni registri
i indeksni registri.
Akumulator A se koristi kao izvorite i odredite operanda u svim operacijama kod
jednoadresnih procesora.
Registar PSW je standardna programska statusna re procesora sastavljena od odreenog
broja bitova, koji se obino nazivaju indikatori. Bitovi programske statusne rei PSW se
nezavisno postavljaju i koriste po pravilima definisanim posebno za svaki bit. Meutim, u
odreenim situacijama, kao kada se skae na prekidnu rutinu i vraa iz nje, sa bitovima
programske statusne rei PSW se postupa na isti nain, pa se zato uzima da oni predstavljaju
razrede jednog registra. U programskoj statusnoj rei PSW postoje dve grupe bitova i to bitovi
statusnog i bitovi upravljakog karaktera (slika 1). Ovi bitovi se nazivaju i indikatori.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
I T P E IN NN IV U - - L
1
L
0
V C Z N
Slika 1 Struktura registra PSW
Bitovi statusnog karaktera su:
Nbit koji se postavlja na 1 u sluaju da je rezultat operacije negativan,
Zbit koji se postavlja na 1 u sluaju da je rezultat operacije jednak 0,
Cbit koji se postavlja na 1 u sluaju prenosa/pozajmice u aritmetici celobrojnih
veliina bez znaka,

9
Vbit koji se postavlja na 1 u sluaju prekoraenja u aritmetici celobrojnih veliina
sa znakom,
L
1
, L
0
bitovi kojima se pamti nivo prioriteta tekueg programa,
Ubit koji se postavlja na 1 u sluaju da je rezultat operacije u pokretnom zarezu
Underflow,
IVbit koji se postavlja na 1 u sluaju da je rezultat operacije u pokretnom zarezu
Inexact Value,
NNbit koji se postavlja na 1 u sluaju da je rezultat operacije u pokretnom zarezu
Not a Number i
INbit koji se postavlja na 1 u sluaju da je rezultat operacije u pokretnom zarezu
Infinity.
Bitovi upravljakog karaktera su:
Ebit koji je jednak 0 ako se zahtevi za maskirajue prekide alju kao nivo i 1 ako se
zahtevi za maskirajue prekide alju kao impuls,
Pbit koji je jednak 0 ako su ulazi u tabelu adresa prekidnih rutina za maskirajue
prekide fiksni i odreeni pozicijama linija po kojima periferije alju zahteve za prekid
i 1 ako ulazi u tabelu adresa prekidnih rutina za maskirajue prekide nisu fiksni i
odreeni su brojevima ulaza koje alju periferije,
Tbit koji je jednak 1 ako procesor treba da posle svake instrukcije generie prekid i
Ibit koji je jednak 1 ako treba da budu dozvoljeni maskirajui prekidi.
Bitovi statusnog karaktera N, Z, C, V, U, IV, NN i IN se postavljaju hardverski na osnovu
rezultata izvravanja instrukcija. Bitovi statusnog karaktera L
1
i L
0
se postavljaju hardverski u
okviru opsluivanja prekida i softverski kao rezultat izvravanja instrukcije povratak iz
prekidne rutine. Bitovi upravljakog karaktera se postavljaju softverski kao rezultat
izvravanja posebnih instrukcija.
Registar SP je standardan ukaziva na vrh steka kada je stek je organizovan u operativnoj
memoriji.
Registar SP moe da raste prema viim i prema niim adresama. Ukoliko stek raste prema
viim adresama, onda se prilikom upisa na stek vri inkrementiranje registra SP, a prilikom
itanja dekrementiranje registra SP. Ukoliko stek raste prema niim adresama, onda se
prilikom upisa na stek vri dekrementiranje registra SP, a prilikom itanja inkrementiranje
registra SP.
Registar SP moe da ukazuje na poslednju zauzetu i prvu slobodnu lokaciju na steku.
Ukoliko stek ukazuje na poslednju zauzetu lokaciju na steku, onda se prilikom upisa na stek
prvo vri inkrementiranje ili dekrementiranje registra SP, pa se onda vri upis, a prilikom
itanja prvo se vri itanje, pa onda dekrementiranje ili inkrementiranje registra SP. Ukoliko
stek ukazuje na prvu slobodnu lokaciju na steku, onda se prilikom upisa na stek prvo vri
upis, pa se onda vri inkrementiranje ili dekrementiranje registra SP, a prilikom itanja prvo se
vri dekrementiranje ili inkrementiranje registra SP, pa se onda vri itanje.
Stek se koristi kao upravljaki stek i kao aritmetiki stek.
Upravljaki stek se koristi kod skoka na potprograma i skoka a na prekidnu rutinu.
Aritmetiki stek se koristi kod nula-adresnih ili stek procesora. Kod njih sve instrukcije
implicitno u toku izvravanja uzimaju operande sa vrha steka i rezultat smetaju na vrh steka.
Postoje realizacije kod kojih se jedan stek koristi i kao aritmetiki i kao upravljaki, a
posteoje i realizacije kod kojih postoje posebno aritmetiki i posebno upravljaki stek.

10
Ukaziva na okvir steka FP (frame pointer) ukazuje na bazu okvira (frame-a) koji se
formira na steku kod poziva potprograma. Koristi se za pristup
- parametrima koji se predaju kod poziva potprograma i
- lokalnim promenljivim veliinama kod jezika sa dinamikim dodeljivanjem prostora
kod ulaska u potprogram i oslobaanjem prostora kod naputanja potprograma.

11
Primer 1.
PROGRAM PRIMER;
begin
integer par1, par2;
...
procedure PRIM (x,y);
begin
integer a, b, c;
...
begin PUSH BP
MOVE SP, BP
PUSH R1
PUSH R2
PUSHPSW
SUB SP, 3
... ...
end; ADD SP, 3
POPPSW
POP R2
POP R1
POP BP
RTS
end;
...
begin
...
CALL PRIM (par1,par2); PUSH par1
PUSH par2
JSR PRIM
ADD SP, 2
...
end;
end;

12
Primer 2.
PROGRAM PRIMER;
begin
integer par1, par2;
...
procedure TEST (z);
begin
integer e, f;
...
begin PUSH BP
MOVE SP, BP
PUSHPSW
SUB SP, 2
... ...
end; ADD SP, 2
POPPSW
POP BP
RTS
end;
procedure PRIM (x,y);
begin
integer a, b, c;
...
begin PUSH BP
MOVE SP, BP
PUSH R1
PUSH R2
PUSHPSW
SUB SP, 3
... ...
CALL TEST(c); PUSH c
JSR TEST
ADD SP,1
... ...
end; ADD SP, 3
POPPSW
POP R2
POP R1
POP BP
RTS
end;
...
begin
...
CALL PRIM (par1, par2); PUSH par1
PUSH par2
JSR PRIM
ADD SP, 2
...
end;
end;

13
Primer 3.
PROGRAM PRIMER;
begin
integer par1, par2;
...
procedure PRIM (x,y);
begin
integer a, b, c;
...
begin PUSH BP
MOVE SP, BP
PUSH R1
PUSH R2
PUSHPSW
SUB SP, 3
... ...
CALL PRIM (a,b); PUSH a
PUSH b
JSR PRIM
ADD SP, 2

... ...
end; ADD SP, 3
POPPSW
POP R2
POP R1
POP BP
RTS
end;
...
begin
...
CALL PRIM (par1,par2); PUSH par1
PUSH par2
JSR PRIM
ADD SP, 2
...
end;
end;

14

Ukaziva na listu argumenata AP
Registar IMR je standardni registar maske za selektivno maskiranje maskirajuih prekida.
Registar IVTP je ukaziva na tabelu adresa prekidnih rutina koja se koristi u okviru
vektorisanog mehanizma prekida.
1.1.2 TIPOVI PODATAKA
Tipovi podataka predstavljaju razliite naine predstavljanja podataka binarnim reima.
Najee korieni tipovi podataka su celobrojne veliine, veliine u pokretnom zarezu,
alfanumeriki niz i numeriki niz.
1.1.2.1 CELOBROJNE VELIINE
Celobrojne veliinine mogu da budu bez znaka i sa znakom.
Ako se binarna re duine n bitova, u kojoj su bitovi oznaeni sa a
n-1
a
n-2
...a
1
a
0
, interpretira
kao celobrojna veliina bez znaka, onda ona predstavlja podatak A ija se vrednost izraunava
pomou izraza
A =

=
1 n
0 i
i
i
a 2
Uz takav nain interpretiranja bitova binarne rei, predstavljaju se celobrojne veliine bez
znaka u opsegu 0 do 2
n
1.
Meutim, ako se ista binarna re intrpretira kao celobrojna veliina sa znakom u drugom
komplementu, onda ona predstavlja podatak A ija se vrednost izraunava pomou izraza
A = 2
n-1
a
n-1
+

=
2 n
0 i
i
i
a 2
Uz ovakav nain interpretiranja bitova binarne rei, predstavljaju se celobrojne vrednosti sa
znakom u opsegu 2
n-1
do 2
n-1
1.
Binarne rei koje predstavljaju celobrojne veliine se mogu interpretirati i na druge naine
kao, na primer, celobrojne veliine sa znakom predstavljene kao znak i veliina, celobrojne
veliine sa znakom u prvom komplementu itd.
Celobrojne veliine mogu da budu fiksne i promenljive duine.
Celobrojne veliine fiksne duine se u raunarima predstavljaju na fiksnim duinama od 8,
16, 32 i 64 bita i njihova duina i nain intrpretacije su odreeni poljem koda operacije
instrukcije.
Celobrojne veliine promenljive duine se predstavljaju na razliitim duinama u nekom
opsegu duina koji je definisan za odreeni raunar i koji odgovara najveoj duini celobrojne
veliina fiksne duine datog raunara. Ako je ta duina 64 bita, onda i celobrojne veliine
promenljive duine mogu da budu u opsegu duina do 64 bit. Celobrojne veliine promenljive
duine se predstavljaju pomou tri operanda koji definiu poetnu adresu memorijske lokacije
(A), poziciju najmlaeg bita celobrojne veliine (P) i duinu (S).

15
1.1.2.2 VELIINE U POKRETNOM ZAREZU
Veliine u pokretnom zarezu imaju polje znaka (s), polje eksponenta (e) i mantise (f). Po
standardu duine veliina u pokretnom zarezu su 32 i 64 bita. U sluaju veliine u pokretnom
zarezu duine 32 bita, ta veliina je predstavljena kao na slici.
31 30
...
23 22 ... 0
s e f
Slika Veliina u pokretnom zarezu
Vrednost v se dobija na sledei nain:
1. za e=255 i f0, v je Not a Number bez obzira na s,
2. za e=255 i f=0, v=(-1)
s
,
3. za 0<e<255, v=(-1)
s
2
e-127
(1.f),
4. za e=0 i f0, v=(-1)
s
2
e-126
(0.f) denormalizovani broj,
5. za e=0 i f=0, v=(-1)
s
0 (nula).

1.1.2.3 ALFANUMERIKI NIZ
Alfanumeriki niz (string) je niz karaktera kodiranih sa 8 bitova, koji se zadaje sa dva
operanda i to: A adresa prvog bajta niza i L duina niza u bajtovima.
1.1.2.4 NUMERIKI NIZ
Numeriki niz (decimalni broj) je celobrojna veliina bez znaka ili sa znakom
predstavljena kao niz binarno kodiranih decimalnih cifara, koji se zadaje sa dva operanda i to:
A adresa prvog bajta niza i L duina niza u bajtovima. U zavisnosti od toga da li se za
predstavljanje binarno kodiranih decimalnih cifara i znaka koristi osam bitova ili etiri bita,
razlikuju se dva osnovna formata numerikih nizova i to: nepakovani format i pakovani
format, respektivno.
Nepakovani format
Nepakovani format numerikih nizova koristi 8 bitova za kodiranje decimalnih cifara i
znaka. Nepakovani format se pojavljuje u dve varijante u zavisnosti od toga kako se
predstavlja znak i to:
- trailing format kod koga se znak numerikog niza utvruje na osnovu znaka najmlae
cifre koja je data zadnjim bajtom niza i
- leading separate format kod koga se znak numerikog niza utvruje na osnovu posebnog
bajta koji je prvi bajt niza.
U trailing format-u se posebno kodiraju pozitivne cifre od 0 do 9 i negativne cifre od -0 do
-9 (slika ). etiri najstarija bita svake cifre predstavljaju znak, a etiri najmlaa bita veliinu
decimalne binarno kodirane cifre. Sve pozitivne cifre imaju etiri najstarija bita sa vrednou
3, a negativne sa vrednou 7.
Na slikama je prikazano kako se predstavljaju trocifreni decimalni brojevi 123 i 123. Oba
broja zauzimaju po tri bajta, poev od adrese A. Cifre stotica i desetica kao starije cifre
predstavljene su pozitivnim ciframa 1 i 2, respektivno, a cifre jedinica, kao najmlae cifre,
predstavljene su pozitivnim i negativnim ciframa 3, respektivno. Na osnovu znaka cifara 3
odreeni su znaci brojeva 123 i 123.

16

cifra kod
+0 30
+1 31
+2 32
... ...
+8 38
+9 39
0 70
1 71
2 72
... ...
8 78
9 79
Slika Kodiranje cifara u trailing format-u

+123 adresa 123 adresa
3 1 A 3 1 A
3 2 A+1 3 2 A+1
3 3 A+2 7 3 A+2
Slika Predstavljanje brojeva 123 i 123 u trailing format-u
U leading separate format-u se posebno kodiraju cifre od 0 do 9, a posebno znak + i
(slika ).
Na slikama je prikazano kako se predstavljaju trocifreni decimalni brojevi 123 i 123. Oba
broja zauzimaju po etiri bajta, poev od adrese A. Na adresi A je bajt koji predstavlja znak, a
na preostale tri adrese bajtovi koji odgovaraju ciframa stotica, desetica i jedinica. U ovom
formatu brojevi 123 i 123 se razlikuju jedino u prvom bajtu.

znak kod
+ 2B
2D

cifra kod
0 30
1 31
2 32
... ...
8 38
9 39
Slika Kodiranje znakova i cifara u leading separate format-u

+123 adresa 123 adresa
2 B A 2 D A
3 1 A+1 3 1 A+1
3 2 A+2 3 2 A+2
3 3 A+3 3 3 A+3
Slika Predstavljanje brojeva 123 i 123 u leading separate format-u

17
Pakovani format
Pakovani format numerikih nizova koristi 4 bita za kodiranje decimalnih cifara od 0 do 9 i
znakova + i (slika ). Cifre od 0 do 9 su predstavljene binarnim vrednostima od 0 do 9, znak
+ binarnim vrednostima A, C, E ili F, i znak binarnim vrednostima B ili D. Za znak + se
najee koristi binarna vrednost C, a za znak binarna vrednost D.
Na slikama je prikazano kako se predstavljaju decimalni brojevi 123 i 12. Oba broja
zauzimaju po dva bajta, poev od adrese A. Znak broja 123 odreen je sa C, a znak broja 12
sa D.
cifra ili znak kod
0 0
1 1
2 2
... ...
8 8
9 9
+ A, C, E ili F
B ili D
Slika Kodiranje cifara u pakovanom formatu

+123 adresa 12 adresa
1 2 A 0 1 A
3 C A+1 2 D A+1
Slika Predstavljanje brojeva 123 i 12 u pakovanom formatu

1.1.3 FORMATI INSTRUKCIJA
Formatom instrukcije se specificiraju tri vrste informacija neophodne za izvravanje
instrukcija i to:
operacija i tip podatka,
izvorini i odredini operandi i
sledea instrukcija.
Ove informacije se specificiraju odgovarajuim poljima instrukcije. U zavisnosti od toga kako
se ove tri vrste informacija specificiraju, zavisi koja su polja u formatu instrukcije prisutna.
Na osnovu toga se govori o razliitim formatim instrukcija.
1.1.3.1 OPERACIJA I TIP PODATKA
Ovim poljem se specificira operacija koju treba izvriti i tip podatka nad kojim datu
operaciju treba izvriti.
Pod operacijom se misli na operacije iz skupa instrukcija, kao to su operacije prenosa,
aritmetike operacije, logike operacije, operacije pomeranja i rotiranja i
upravljakeoperacije.
Pod tipom podatka se misli na celobrojne veliine sa znakom i bez znaka, veliine u
pokretnom zarezu itd. i to na razliitim duinama. Poljem izvorini i odredini operandi se, na
primer, samo specificira adresa memorijske lokacije poev od koje je smeten operand. S
obzirom na to da operandi mogu da budu na razliitim duinama, razliitim vrednostima polja
operacije se specificira duina operanda. Ono to se proita je binarna re koju je mogue

18
interpretirati na vie razliitih naina u zavisnosti od broja raspoloivih tipova podataka. Kao
primer se moe uzeti binarna re 10000011 koju je mogue interpretirati na vie naina. To je
+131, ako se inerpretira kao celobrojna vrednost bez znaka,
-3, ako se interpretira kao celobrojna vrednost sa znakom u nainu predstavljanja znak i
veliina
-125, ako se interpretira kao celobrojna veliina sa znakom u nainu predstavljanja prvi
komplement i
-124, ako se interpretira kao celobrojna veliina sa znakom u nainu predstavljanja drugi
komplement.
Stoga za odreenu operaciju postoji onoliko kodova opdracija koliko ima razliitih tipova
podataka razliitih duina.
1.1.3.2 IZVORINI I ODREDINI OPERANDI
Ovim poljem se eksplicitno specificiraju operandi. Postoje vie varijanti ovog polja koje
nastaju kao posledica sledea dva elementa:
- broj eksplicitno specificiranih operanada i
- mogue lokacije operanada.
Broj eksplicitno specificiranih operanada
Na osnovu broja eksplicitno specificiranih operanada razlikuji se troadresni, dvoadresni,
jednoadresni i nulaadresni formati instrukcija.
Postoje i promenljivi formati instrukcija gde se na osnovu koda operacije zakljuuje koliko
je ima operanada. Instrukcije binarnih aritmetikih i logikih operacija imaju troadresni
format, instrukcije operacija prenosa ima ju dvoadresni format, instrukcije operacija
inkrementiranja i dekrementiranja imaju jednoadresni fromat itd.
U sluaju instrukcija nestandardnih operacija za rad sa stringovima, kontrolu petlji itd. ima
i vie od tri operanda..
Mogue lokacije operanada
Mogue lokacije operanada su memorijske lokacije, registri procesora i neposredne
veliine u instrukciji. Ima vie varijanti realizacije ovog polja instrukcije,a motivi kod
njegovog definisanja su da:
da ovaj deo bude krai da bi se manje memorije zauzimalo za programe i bre oitavale
instrukcije (adresa memorije, neposredna veliina ili adresa registra),
da se bre dolazi do operanada (memorije, neposredna veliina ili registar), i
da se prui podrka za moguu primenu nekih tehnika realizacije procesora (pipeline).
Na osnovu moguih lokacija operanada razlikuju se tri vrste arhitektura:
memorija memorija,
memorija registar i
registar registar.
U sluaju arhitekture memorija memorija, svi operandi sa kojima se radi, i to i izvorini i
odredini, su iskljuivo u memoriji. Postoje i troadresni i dvoadresni i jednoadresni i
nulaadresni formati ove arhitekture.

U sluaju arhitekture memorija registar, jedan izvorini operand je uvek registar, drugi
izvorini operand je memorija, a odredite ili registar ili memorija. Postoji obino dvoadresni
format ove arhitekture.

19
U sluaju arhitekture registar registar, svi operandi sa kojima se radi, i to i izvorini i
odredini, su iskljuivo u registrima, a memorijskim lokacijama se iskljuivo pristupa
instrukcijama load i store. Postoje obino troadresni format ove arhitekture.

Ovo je neka osnovna podela, pri emu i u odnosu na nju ima varijanti. Najdrastiniji
primer su procesori koji su u osnovi memoria memorija, ali koji dozvoljavaju da se kroz
adresiranja specificira za svaki od operanada ne samo memorija, ve i registar i neposredna
veliina. Time se pokrivaju sve varijante.
1.1.3.3 SLEDEA INSTRUKCIJA
Ovo polje je postojalo kod nekih ranijih procesora, koji nisu imali PC. Danas tog polja
nema. Razlog je da je time instrukcija kraa i da nema opravdanja za to zbog sekvencijalnosti
izvravanja instrukcija sa 15% skokova. Cena koja se plaa je poveanje programa za 15%
instrukcija skokova.
1.1.4 NAINI ADRESIRANJA
Naini adresiranja odreuju da li je operand sadraj neke memorijske lokacije, nekog od
registara podataka ili registara opte namene procesora ili neposredna veliina u samoj
instrukciji. Naini adresiranja speciificiraju i kako treba formirati adresu memorijske lokacije
ukoliko je operand sadraj neke memorijske lokacije. Najei naini adresiranja su
registarsko direktno adresiranje, registarsko indirektno adresiranje, memorijsko direktno
adresiranje, memorijsko indirektno adresiranje, bazno adresiranje sa pomerajem, indeksno
adresiranje sa pomerajem, registarsko indirektno adresiranje sa pomerajem, bazno-indeksno
adresiranje sa pomerajem, postdekrement adresiranje, preinkrement adresiranje, relativno
adresiranje sa pomerajem i neposredno adresiranje.
Registarsko direktno adresiranje je adresiranje kod koga se operand nalazi u jednom od
registara podataka ili registara opte namene. Registar podataka ili registar opte namene je
specificiran poljem reg_dir.
Registarsko indirektno adresiranje je adresiranje kod koga se operand nalazi u memoriji na
adresi odreenoj sadrajem jednog od adresnih registara ili registara opte namene. Adresni
registar ili registar opte namene je specificiran poljem reg_ind.
Memorijsko direktno adresiranje je adresiranje kod koga se operand nalazi u memoriji na
adresi odreenoj poljem mem.
Memorijsko indirektno adresiranje je adresiranje kod koga se operand nalazi u memoriji na
adresi odreenoj sadrajem memorijske lokacije ija je adresa odreena poljem mem.
Bazno adresiranje sa pomerajem je adresiranje kod koga se operand nalazi u memoriji na
adresi koja se dobija sabiranjem sadraja jednog od baznih registara i pomeraja. Bazni registar
je specificiran poljem reg_baz, a pomeraj poljem displ.
Indeksno adresiranje sa pomerajem je adresiranje kod koga se operand nalazi u memoriji
na adresi koja se dobija sabiranjem sadraja jednog od indeksnih registara i pomeraja.
Indeksni registar je specificiran poljem reg_inx, a pomeraj poljem displ.
Registarsko indirektno adresiranje sa pomerajem je adresiranje kod koga se operand nalazi
u memoriji na adresi koja se dobija sabiranjem sadraja jednog od registara opte namene i
pomeraja. Registar opte namene je specificiran poljem reg_gpr, a pomeraj poljem displ.

20
Bazno-indeksno adresiranje sa pomerajem je adresiranje kod koga se operand nalazi u
memoriji na adresi koja se dobija sabiranjem sadraja jednog od baznih registara, jednog od
indeksnih registara i pomeraja. Bazni registar je specificiran poljem reg_baz, indeksni registar
poljem reg_inx, a 8-bitni pomeraj poljem displ. Ukoliko se radi o procesoru sa registrima
opte namene, tada se poljima reg_baz i reg_inx kao bazni i indeksni registar specificiraju dva
registra opte namene.
Postdekrement adresiranje i preinkrement adresiranje su adresiranja kod kojih se operand
nalazi u memoriji na adresi odreenoj sadrajem jednog od adresnih registara ili registra opte
namene. Kod postdekrement adresiranja sadraj specificiranog adresnog registra ili registra
opte namene se smanji za 1 posle pristupa operandu, dok se kod preinkrement adresiranja
sadraj specificiranog adresnog registra ili registra opote namene povea za 1 pre pristupa
operandu. Adresni registar ili registar opte namene je specificiran poljem reg_ind.
Relativno adresiranje sa pomerajem je adresiranje kod koga se operand nalazi u memoriji
na adresi dobijenoj sabiranjem sadraja programskog brojaa PC i pomeraja, koji je
specificiran poljem displ.
Neposredno adresiranje je adresiranje kod koga se operand kao celobrojna veliina bez
znaka ili sa znakom nalazi u polju immed instrukcije.
1.1.5 SKUP INSTRUKCIJA
Skup instrukcija specificira operacije koje mogu da se izvravaju u procesoru. Skup
instrukcija ine standardne instrukcije i nestandardne instrukcije.
1.1.5.1 STANDARDNE INSTRUKCIJE
Standardne instrukcije ukljuuje operacije ijim kombinovanjem svaki problem koji treba
da se rei u raunaru moe da se predstavi programom. Standardne instrukcije se u nekom
vidu nalaze u svakom procesoru. Skup standardnih instrukcija ine instrukcije prenosa,
aritmetike instrukcije, logike instrukcije, instrukcije pomeranja i rotiranja, instrukcije skoka
i meovite instrukcije.
1.1.5.1.1 INSTRUKCIJE PRENOSA
Instrukcije prenosa su:
MOVE
LOAD i STORE
PUSH i POP
IN i OUT
Instrukcija LOADB src prenosi sadraj operanda iz izvorine lokacije src u akumulator.
Operand moe da bude memorijska lokacija, registar procesora i neposredna veliina. Format
ove instrukcije je jednoadresni.
Instrukcija STOREB dst prenosi sadraj akumulatora u operand dst. Operand moe da
bude memorijska lokacija ili registar procesora, ali ne neposredna veliina. Format ove
instrukcije je jednoadresni.
Postoje instrukcije kojima se prenosi sadraja akumulatora u registre SP, IMR, IVTP itd.
Format je najee bezadresni, pa se na osnovu vrednosti koda operacije implicitno zna koji je
od ovih registar odredite u koje se prebacuje sadraj akumulatora

21
Instrukcija PUSH src prenosi sadraj operanda iz izvorine lokacije src na vrh steka.
Operand moe da bude memorijska lokacija, registar procesora i neposredna veliina. Format
ove instrukcije je jednoadresni.
Instrukcija POP dst prenosi sadraj sa vrha steka u operand dst. Operand moe da bude
memorijska lokacija ili registar procesora, ali ne neposredna veliina. Format ove instrukcije
je jednoadresni.
Instrukcija IN src prenosi sadraj registra kontrolera periferije ija je adresa data poljem src
u akumulator. Format ove instrukcije je jednoadresni.
Instrukcija OUT dst prenosi sadraj akumulatora u registar kontrolera periferije ija je
adresa data poljem dst. Format ove instrukcije je jednoadresni.
1.1.5.1.2 ARITMETIKE INSTRUKCIJE
Instrukcija ADD src sabira celobrojnu 8-bitnu veliinu koja se nalazi u niih 8 razreda
akumulatora AL sa operandom src koji je celobrojna 8-bitna veliina, a rezultat smeta u niih
8 razreda akumulatora AL. Format instrukcije dat je u odeljku Error! Reference source not
found..
Instrukcija SUB src oduzima operand src koji je celobrojna 8-bitna veliina od celobrojne
8-bitne veliine koja se nalazi u niih 8 razreda akumulatora AL, a rezultat smeta u niih 8
razreda akumulatora AL. Format instrukcije dat je u odeljku Error! Reference source not
found..
Instrukcija INC inkrementira celobrojnu 8-bitnu veliinu koja se nalazi u niih 8 razreda
akumulatora AL i rezultat smeta u akumulator AL. Instrukcija je bezadresna. Format
instrukcije dat je u odeljku Error! Reference source not found..
Instrukcija DEC dekrementira celobrojnu 8-bitnu veliinu koja se nalazi u niih 8 razreda
akumulatora AL i rezultat smeta u akumulator AL. Instrukcija je bezadresna. Format
instrukcije dat je u odeljku Error! Reference source not found..
Instrukcija MULU src mnoi celobrojnu 8-bitnu veliinu bez znaka koja se nalazi u niih 8
razreda akumulatora AL sa operandom src koji je celobrojna 8-bitna veliina bez znaka.
Dobijeni 16-bitni rezultat se smeta u akumulator A. Format instrukcije dat je u odeljku
Error! Reference source not found..
Instrukcija MULS src mnoi celobrojnu 8-bitnu veliinu sa znakom koja se nalazi u niih
8 razreda akumulatora AL sa operandom src koji je celobrojna 8-bitna veliina sa znakom.
Dobijeni 16-bitni rezultat se smeta u akumulator A. Format instrukcije dat je u odeljku
Error! Reference source not found..
Instrukcija DIVU src deli celobrojnu 16-bitnu veliinu bez znaka koja se nalazi u
akumulatoru A, sa operandom src koji je celobrojna 8-bitna veliina bez znaka. Rezultat
deljenja se smeta u niih 8 razreda akumulatora AL, a ostatak deljenja se smeta u viih 8
razreda akumulatora AH. Format instrukcije dat je u odeljku Error! Reference source not
found..
Instrukcija DIVS src deli celobrojnu 16-bitnu veliinu sa znakom koja se nalazi u
akumulatoru A, sa operandom src koji je celobrojna 8-bitna veliina sa znakom. Rezultat
deljenja se smeta u niih 8 razreda akumulatora AL, a ostatak deljenja se smeta u viih 8
razreda akumulatora AH. Format instrukcije dat je u odeljku Error! Reference source not
found..

22
1.1.5.1.3 LOGIKE INSTRUKCIJE
Instrukcija AND src izraunava logiko I sadraja niih 8 razreda akumulatora AL i
operanda src koji je 8-bitna veliina, a rezultat smeta u niih 8 razreda akumulatora AL.
Format instrukcije dat je u odeljku Error! Reference source not found..
Instrukcija OR src izraunava logiko ILI sadraja niih 8 razreda akumulatora AL i
operanda src koji je 8-bitna veliina, a rezultat smeta u niih 8 razreda akumulatora AL.
Format instrukcije dat je u odeljku Error! Reference source not found..
Instrukcija XOR src izraunava logiko EKSLUZIVNO ILI sadraja niih 8 razreda
akumulatora AL i operanda src koji je 8-bitna veliina, a rezultat smeta u niih 8 razreda
akumulatora AL. Format instrukcije dat je u odeljku Error! Reference source not found..
Instrukcija NOT izraunava logiku NEGACIJU sadraja niih 8 razreda akumulatora AL,
gde ostaje i rezultat. Format instrukcije dat je u odeljku Error! Reference source not found..
1.1.5.1.4 INSTRUKCIJE POMERANJA I ROTIRANJA
Instrukcija ASH src pomera sadraj niih 8 razreda akumulatora AL ulevo ili udesno za
onoliko mesta koliko je specificirano operandom src, koji je celobrojna 8-bitna veliina sa
znakom. Ako je operand src pozitivan, pomeranje se vri ulevo, a ako je operand src
negativan, pomeranje se vri udesno. Pri pomeranju udesno, razred AL
7
ostaje nepromenjen.
Pri pomeranju ulevo, u razred AL
0
se upisuje 0. Format instrukcije dat je u odeljku Error!
Reference source not found..
Instrukcija LSH src pomera sadraj niih 8 razreda akumulatora AL ulevo ili udesno za
onoliko mesta koliko je specificirano operandom src, koji je celobrojna 8-bitna veliina sa
znakom. Ako je operand src pozitivan, pomeranje se vri ulevo a ako je operand src negativan,
pomeranje se vri udesno. Pri pomeranju udesno, u razred AL
7
se upisuje 0. Pri pomeranju
ulevo, u razred AL
0
se upisuje 0. Format instrukcije dat je u odeljku Error! Reference source
not found..
Instrukcija ROT src rotira sadraj niih 8 razreda akumulatora AL ulevo ili udesno za
onoliko mesta koliko je specificirano operandom src, koji je celobrojna 8-bitna veliina sa
znakom. Ako je operand src pozitivan, rotiranje se vri ulevo, a ako je operand src negativan,
rotiranje se vri udesno. Pri rotiranju udesno, u razred AL
7
se upisuje sadraj razreda AL
0
. Pri
rotiranju ulevo, u razred AL
0
se upisuje sadraj razreda AL
7
. Format instrukcije dat je u
odeljku Error! Reference source not found..
Instrukcija ROTC src rotira sadraj niih 8 razreda akumulatora AL ulevo ili udesno za
onoliko mesta koliko je specificirano operandom src, koji je celobrojna 8-bitna veliina sa
znakom. Ako je operand src pozitivan, rotiranje se vri ulevo, a ako je operand src negativan,
rotiranje se vri udesno. Pri rotiranju udesno, u razred AL
7
se upisuje sadraj flip-flopa CF, a u
flip-flop CF se upisuje sadraj razreda AL
0
. Pri rotiranju ulevo, u razred AL
0
se upisuje
sadraj flip-flopa CF, a u flip-flop CF se upisuje sadraj razreda AL
7
. Format instrukcije dat je
u odeljku Error! Reference source not found..
1.1.5.1.5 INSTRUKCIJE SKOKA
Instrukcije skoka se svrstavaju u sledee grupe: instrukcije uslovnog skoka, instrukcije
bezuslovnog skoka, instrukcije skoka na potprogram i povratka iz potprograma, instrukcija
prekida i instrukcija povratka iz prekidne rutine.
Instrukcije uslovnog skoka

23
Instrukcije uslovnog skoka BEQL disp, BNEQ disp, BGRT disp, BGRE disp, BLSS disp,
BLEQ disp, BGRTU disp, BGREU disp, BLSSU disp, BLEQU disp, BNEG disp, BNNG
disp, BOVF disp, BNVF disp, BIN disp, BNIN disp, BNN disp, BNNN disp, BIV disp,
BNIV disp, BU disp i BNU disp realizuju relativni skok sa pomerajem disp u odnosu na
registar PC ukoliko je uslov specificiran kodom operacije ispunjen. Format ovih instrukcija je
dat u odeljku Error! Reference source not found..
Tabela 1 Instrukcije uslovnog skoka
instrukcija znaenje uslov
BEQL skok na jednako Z = 1
BNEQ skok na nejednako Z = 0
BGRT skok na vee nego (sa znakom) (N V)
Z = 0
BGRE skok na vee nego ili jednako (sa
znakom)
N V = 0
BLSS skok na manje nego (sa znakom) (N V) = 1
BLEQ skok na manje nego ili jednako (sa
znakom)
(N V)
Z = 1
BGRTU skok na vee nego (bez znaka) C Z = 0
BGREU skok na vee nego ili jednako (bez
znaka)
C = 0
BLSSU skok na manje nego (bez znaka) C = 1
BLEQU skok na manje nego ili jednako (bez
znaka)
C Z = 1
BNEG skok na N = 1 N = 1
BNNG skok na N = 0 N = 0
BOVF skok na V = 1 V = 1
BNVF skok na V = 0 V = 0
BIN skok na IN = 1 IN = 1
BNIN skok na IN = 0 IN = 0
BNN skok na NN = 1 NN = 1
BNNN skok na NN = 0 NN = 0
BIV skok na IV = 1 IV = 1
BNIV skok na IV = 0 IV = 0
BU skok na U = 1 U = 1
BNU skok na U = 0 U = 0
Instrukcija bezuslovnog skoka
Instrukcija bezuslovnog skoka JMP realizuje skok na adresu koja se izraunava na osnovu
naina adresiranja koji je zadat u samoj instrukciji. Format ove instrukcije je dat u odeljku
Error! Reference source not found..
Instrukcije skoka na potprogram i povratka iz potprograma
Instrukcija JSR realizuje skok na potprogram ija se adresa izraunava na osnovu naina
adresiranja koji je zadat u samoj instrukciji uz uvanje vrednosti registra PC na steku. Format
ove instrukcije je dat u odeljku Error! Reference source not found..
Instrukcija RTS realizuje povratak iz potprograma uz restauraciju vrednosti registra PC sa
steka. Format ove instrukcije je dat u odeljku Error! Reference source not found..

24
Instrukcija prekida
Instrukcija INT pre programskim putem realizuje prekid i skok na odgovarajuu prekidnu
rutinu. Format ove instrukcije je dat u odeljku Error! Reference source not found.. Poljem
DISP se predstavlja broj ulaza u tabelu adresa prekidnih rutina pre kao celobrojna veliina bez
znaka.
Instrukcija povratka iz prekidne rutine
Instrukcijom RTI se realizuje povratak iz prekidne rutine uz restauraciju vrednosti
registara PSW i PC sa steka. Format ove instrukcije je dat u odeljku Error! Reference source
not found..
1.1.5.1.6 MEOVITE INSTRUKCIJE
Instrukcije postavljanja indikatora u PSW
Instrukcija INTD postavlja nulu u razred I registra PSW. Format instrukcije je dat u
odeljku Error! Reference source not found..
Instrukcija INTE postavlja jedinicu u razred I registra PSW. Format instrukcije je dat u
odeljku Error! Reference source not found..
Instrukcija TRPD postavlja nulu u razred T registra PSW. Format instrukcije je dat u
odeljku Error! Reference source not found..
Instrukcija TRPE postavlja jedinicu u razred T registra PSW. Format instrukcije je dat u
odeljku Error! Reference source not found..
Instrukcija VARD postavlja nulu u razred P registra PSW. Format instrukcije je dat u
odeljku Error! Reference source not found..
Instrukcija VARE postavlja jedinicu u razred P registra PSW. Format instrukcije je dat u
odeljku Error! Reference source not found..
Instrukcija EDGD postavlja nulu u razred E registra PSW. Format instrukcije je dat u
odeljku Error! Reference source not found..
Instrukcija EDGE postavlja jedinicu u razred E registra PSW. Format instrukcije je dat u
odeljku Error! Reference source not found..
Instrukcija bez dejstva
Instrukcija NOP ne proizvodi nikakvo dejstvo. Format ove instrukcije je dat u odeljku
Error! Reference source not found..
1.1.5.2 NESTANDARDNE INSTRUKCIJE
Nestandardne instrukcije ukljuuje operacije kojima se omoguuje jednostavnije
preslikavanje konstrukcija iz programskih jezika i operativnih sistema u instrukcije procesora,
nego ukoliko se to ini standardnim instrukcijama. Nestandardne instrukcije se javljaju u
nekom vidu kod procesora CISC tipa dok se kod procesora RISC tipa ne javljaju. Skup
nestandardnih instrukcija ine instrukcije nad celobrojnim veliinama promenljive duine,
string instrukcije, decimalne instrukcije, instrukcije kontrole petlji itd.
Instrukcije nad celobrojnim veliinama promenljive duine



25
String instrukcije
MOVC srclen, srcaddr, fill, dstlen, dstaddr
Instrukcija MOVC realizuje kopiranje karaktera izvorinog stringa u karaktere odredinog
stringa. poetna adresa izvorinog stringa je specificirana operandom srcaddr, duina
izvorinog stringa je je specificirana operandom srclen, poetna adresa odredinog stringa je
je specificirana operandom dstaddr, duina odredinog stringa je je specificirana operandom
dstlen i karakter FILL je specificiran operandom fill. Izvorini i odredini string mogu biti
razliitih duina. Kopiranje karaktera izvorinog stringa u karaktere odredinog stringa se
realizuje uvek na duini odredinog stringa. Karakter FILL se koristi samo u sluaju da je
izvorini string krai od odredinog stringa. Poetne adrese i duine izvorinog i odredinog
stringa mogu tako da budu zadate da doe do njihovog deliminog ili potpunog preklapanja.
Rezultat izvravanja instrukcije MOVC je, pored kopiranja sadraja jednog dela memorije
u drugi deo memorije, i postavljanje indikatora Z i C. Indikator Z ukazuje da li su duine
izvorinog i odredinog stringa jednake ili ne, dok indikator C, u sluaju da duine izvorinog
i odredinog stringa nisu jednake, ukazuje da li je odredini string dui od izvorinog ili ne.
Ako su izvorini i odredini string jednake duine (srclen = dstlen) karakteri izvorinog
stringa e u celosti biti kopirani u karaktere odredinog stringa (slika 2). Indikator Z e biti
postavljen na jedan (Z=1), a indikator C na nulu (C=0).
srcaddr
dstaddr
d
s
t
l
e
n
s
r
c
l
e
n

Slika 2 Instrukcija MOVC za srclen = dstlen
Ako je izvorini string dui od odredinog stringa (srclen > dstlen) bie preneto samo prvih
dstlen karaktera izvorinog stringa u odredini string, a preostali karakteri izvorinog stringa
nee biti preneti (slika 3). U ovom sluaju indikatori Z i C e biti postavljeni na nulu (Z=0,
C=0).
Ako je izvorini string krai od odredinog stringa (srclen < dstlen) svi karakteri izvorinog
stringa e biti preneti u prvih srclen karaktera odredinog stringa, a preostali karakteri
odredinog stringa do duine odredinog stringa e biti popunjeni karakterom FILL (slika4).
Indikator Z e biti postavljen na nulu (Z=0), a indikator C na jedan (C=1).
Tokom izvravanja instrukcije MOVC, i to nakon kopiranja jednog karaktera izvorinog
stringa u element odredinog stringa, sadraji lokacija srcaddr i dstaddr se inkrementiraju, a
sadraji lokacija srclen i dstlen dekrementiraju. Tada sadraj lokacije srcaddr predstavlja
adresu sledeeg karaktera izvorinog koji treba da bude kopiran, sadraj lokacije dstaddr
adresu sledeeg karaktera odredinog stringa koji treba da bude popunjen, lokacije srclen broj
karaktera izvorinog stringa koji jo uvek nisu kopirani, a lokacije dstlen broj nepopunjenih
karaktera odredinog stringa.

26
dstaddr
d
s
t
l
e
n
srcaddr
s
r
c
l
e
n
d
s
t
l
e
n

Slika 3 Instrukcija MOVC za srclen > dstlen

d
s
t
l
e
n
dstaddr
FILL
srcaddr
s
r
c
l
e
n
s
r
c
l
e
n

Slika 4 Instrukcija MOVC za srclen < dstlen
MOVTC srclen, srcaddr, fill, tbladdr, dstlen, dstaddr
Instrukcija MOVTC realizuju prevoenje karaktera izvorinog stringa i njihovo smetanje
u odgovarajue karaktere odredinog stringa. Za prevoenje se koristi translaciona tabela koja
ima 256 ulaza. Element odredinog stringa popunjava se karakterom koji se nalazi unutar
translacione tabele na adresi koja je odreena vrednou karaktera izvorinog stringa koji se
prevodi. Poetna adresa izvorinog stringa je srcaddr, duina izvorinog stringa je srclen,
poetna adresa odredinog stringa je dstaddr, duina odredinog stringa je dstlen, adresa
translacione tabele je tbladdr i karakter FILL je specificiran operandom fill. Izvorini i
odredini string mogu biti razliitih duina. Prevoenje karaktera izvorinog stringa u
karaktere odredinog stringa se realizuje uvek na duini odredinog stringa. Karakter FILL se
koristi samo u sluaju da je izvorini string krai od odredinog stringa. Poetne adrese i
duine izvorinog i odredinog stringa i poetna adresa translacione tabele mogu tako da budu
zadate da doe do njihovog deliminog ili potpunog preklapanja.
Rezultat izvravanja instrukcije MOVTC je, pored prevoenja sadraja jednog dela
memorije i popunjavanja prevedenim vrednostima drugog dela memorije, i postavljanje
indikatora Z i C. Indikator Z ukazuje da li su duine izvorinog i odredinog stringa jednake
ili ne, dok indikator C, u sluaju da duine izvorinog i odredinog stringa nisu jednake,
ukazuje da li je odredini string dui od izvorinog ili ne.
Ako su izvorini i odredini string jednake duine (srclen = dstlen) svaki karakter
izvorinog stringa e biti preveden i smeten na odgovarajue mesto unutar odredinog stringa
(slika 5). Indikator Z e biti postavljen na jedan (Z=1), a indikator C na nulu (C=0).

27
srcaddr
s
r
c
l
e
n
tbladdr
0
i
255
d
s
t
l
e
n
dstaddr

Slika 5 Instrukcija MOVTC za srclen = dstlen
Ako je izvorini string dui od odredinog stringa (srclen > dstlen) bie prevedeno samo
prvih dstlen karaktera izvorinog stringa i smeteno na odgovarajue mesto unutat odredinog
stringa, a preostali karakteri izvorinog stringa nee biti prevedeni (slika 6). U ovom sluaju
indikatori Z i C e biti postavljeni na nulu (Z=0, C=0).
tbladdr
0
i
255
srcaddr
s
r
c
l
e
n
d
s
t
l
e
n
d
s
t
l
e
n
dstaddr

Slika 6 Instrukcija MOVTC za srclen > dstlen
Ako je izvorini string krai od odredinog stringa (srclen < dstlen) svi karakteri izvorinog
stringa e biti prevedeni i prevedene vrednosti smetene u prvih srclen karaktera odredinog
stringa, a preostali karakteri odredinog stringa do duine odredinog stringa e biti popunjeni
karakterom FILL (slika 7). Indikator Z e biti postavljen na nulu (Z=0), a indikator C na jedan
(C=1).
tbladdr
0
i
255
srcaddr
s
r
c
l
e
n
FILL
d
s
t
l
e
n
dstaddr
s
r
c
l
e
n

Slika 7 Instrukcija MOVTC za srclen < dstlen
Tokom izvravanja instrukcije MOVTC, i to nakon prevoenja jednog karaktera izvorinog
stringa i smetanja prevedene vrednosti u karakter odredinog stringa, sadraji lokacija
srcaddr i dstaddr se inkrementiraju, a sadraji lokacija srclen i dstlen dekrementiraju. Tada
sadraj lokacija srcaddr predstavlja adresu sledeeg karaktera izvorinog koji treba da bude

28
preveden, sadraj lokacija dstaddr adresu sledeeg karaktera odredinog stringa na kojoj
prevedeni karakter treba da bude smeten, lokacije srclen broj karaktera izvorinog stringa
koji jo uvek nisu prevedeni, a lokacije dstlen broj nepopunjenih karaktera odredinog stringa.
CMPC src1len, src1addr, fill, src2len, src2addr
Instrukcija CMPC (COMPARE CHARACTERS) uporeuje karaktere dva izvorina stringa
radi utvrivanja da li su dva stringa identina ili ne (slike 8, 9 i 10). Uporeivanje karaktera
dva izvorina stringa se realizuje na duini dueg izvorinog stringa ukoliko postoji jednakost
karaktera koji se uporeuju ili se zavrava ranije i to kada se prvi put otkrije nejednakost
karaktera koji se uporeuju. Poetna adresa prvog izvorinog stringa je src1addr, duina
prvog izvorinog stringa je src1len, poetna adresa drugog izvorinog stringa je src2addr,
duina drugog izvorinog stringa je dst2len i karakter FILL je specificiran operandom fill.
Izvorini stringovi mogu da budu razliitih duina. Karakter FILL se koristi samo u sluaju da
izvorini stringovi nisu istih duina. U sluaju razliitih duina izvorinih stringova kada se
iscrpe karakteri kraeg izvorinog stringa karakter FILL se koristi za poreenje sa preostalim
karakterima dueg izvorinog stringa. Poetne adrese i duine izvorinih stringova mogu tako
da budu zadate da doe do njihovog deliminog ili potpunog preklapanja.
src2addr
s
r
c
2
l
e
n
src1addr
s
r
c
1
l
e
n
CMP
eql

Slika 8 Instrukcija CMPC za srclen = dstlen
CMP
eql
s
r
c
1
l
e
n
src1addr
s
r
c
1
l
e
n
src2addr
s
r
c
2
l
e
n
FILL

Slika 9 Instrukcija CMPC za src1len > src2len
CMP
eql
src2addr
s
r
c
2
l
e
n
src1addr
s
r
c
1
l
e
n
FILL
s
r
c
2
l
e
n

Slika 10 Instrukcija CMPC za src1len < src2len
Rezultat izvravanja instrukcije CMPC je utvrivanje da li su dva izvorina stringa
identina ili ne. Stringovi su identini ukoliko se uporeivanje karaktera dva izvorina stringa

29
realizuje na duini dueg izvorinog stringa i pri tome postoji jednakost karaktera koji se
uporeuju. Stringovi nisu identini ukoliko se uporeivanje karaktera dva izvorina stringa
zavrava ranije i to kada se prvi put otkrije nejednakost karaktera koji se uporeuju. Rezultat
izvravanja instrukcije CMPC se daje postavljanjem indikatora Z i C. Indikator Z ukazuje da
li su dva izvorina stringa identina ili ne, dok indikator C, u sluaju da se otkrije da neki par
karaktera dva izvorina stringa nije identian, ukazuje koji od ta dva karaktera ima veu
vrednost. Ukoliko su stringovi identini indikator Z bit e biti postavljen na vrednost jedan
(Z=1), a indikator C na vrednost nula (C=0). Ukoliko stringovi nisu identini indikator Z e
biti postavljen na vrednost nula (Z=0), a vrednost indikatora C zavisie od vrednosti karaktera
stringova za koje je utvreno da nisu jednaki. Ako su vrednosti takve da je vrednost karaktera
prvog izvorinog stringa manja od vrednosti karaktera drugog izvorinog stringa indikator C
e biti postavljen na vrednost 1 (C=1). Ako su vrednosti takve da je vrednost karaktera prvog
izvorinog stringa vea od vrednosti karaktera drugog izvorinog stringa indikator C e biti
postavljen na vrednost 0 (C=0).
Tokom izvravanja instrukcije CMPC, i to nakon poreenja jednog karaktera prvog
izvorinog stringa i jednog karaktera drugog izvorinog stringa, sadraji lokacija src1addr i
src2addr se inkrementiraju, a sadraji lokacija src1len i src2len dekrementiraju. Tada sadraj
lokacije src1addr predstavlja adresu sledeeg karaktera prvog izvorinog koji treba da se
uporeuje, lokacije src2addr adresu sledeeg karaktera drugog izvorinog stringa koji treba da
se uporeuje, lokacije src1len broj karaktera prvog izvorinog stringa koji jo uvek nisu
uporeivani, a lokacije src2len broj karaktera drugog izvorinog stringa koji jo uvek nisu
uporeivani.
LOCC len, addr, char
Instrukcija LOCC (LOCATE CHARACTER) izvrava operaciju poreenja izmeu svakog
karaktera izvorinog stringa i karaktera poreenja (slika 11). Operacija se realizuje ili na
duini izvorinog stringa ukoliko je rezultat operacije nejednakost za svaki karakter
izvorinog stringa ili se zavrava ranije i to kada se prvi put otkrije da je rezultat operacije
jednakost. Poetna adresa s izvorinog tringa je srcaddr, duina izvorinog stringa je srclen i
karakter poreenja je specificiran operandom char.
Rezultat izvravanja instrukcije LOCC je utvrivanje da li su svi karakteri izvorinog
stringa razliiti od karaktera poreenja ili ne. Rezultat izvravanja instrukcije LOCC se daje
postavljanjem indikatora Z na vrednost jedan ili nula, dok se indikator C uvek postavlja na
vrednost nula (C=0). Ukoliko su svi karakteri izvorinog stringa razliiti od karaktera
poreenja indikator Z bit e biti postavljen na vrednost jedan (Z=1). Ukoliko se pojavi
karakter izvorinog stringa identian karakteru poreenja indikator Z bit e biti postavljen na
vrednost jedan (Z=0).
Tokom izvravanja instrukcije LOCC, i to nakon poreenja svakog karaktera izvorinog
stringa i karaktera poreenja, sadraj lokacije srcaddr se inkrementira, a lokacije srclen se
dekrementira. Tada sadraj lokacije srcaddr predstavlja adresu sledeeg karaktera izvorinog
stringa za koji poreenje treba da se izvri, a lokacije srclen broj karaktera izvorinog stringa
za koje poreenje treba da se izvri.
SKPC len, addr, char
Instrukcija SKPC (SKIP CHARACTERS) izvrava operaciju poreenja izmeu svakog
karaktera izvorinog stringa i karaktera poreenja (slika 11). Operacija se realizuje ili na
duini izvorinog stringa ukoliko je rezultat operacije jednakost za svaki karakter izvorinog
stringa ili se zavrava ranije i to kada se prvi put otkrije da je rezultat operacije nejednakost.

30
Poetna adresa izvorinog stringa je addr, duina izvorinog stringa je len i karakter poreenja
je specificiran operandom char.
Rezultat izvravanja instrukcije SKPC je utvrivanje da li su svi karakteri izvorinog
stringa identini karakteru poreenja ili ne. Rezultat izvravanja instrukcije SKPC se daje
postavljanjem indikatora Z na vrednost jedan ili nula, dok se indikator C uvek postavlja na
vrednost nula (C=0). Ukoliko su svi karakteri izvorinog stringa identini karakteru poreenja
indikator Z bit e biti postavljen na vrednost jedan (Z=1). Ukoliko se pojavi karakter
izvorinog stringa razliit od karaktera poreenja indikator Z bit e biti postavljen na vrednost
jedan (Z=0).
srcaddr
s
r
c
l
e
n
karakter
poreenja
eql
CMP
noteql

Slika 11 Instrukcije SKPC i LOCC
Tokom izvravanja instrukcije SKPC, i to nakon poreenja svakog karaktera izvorinog
stringa i karaktera poreenja, sadraj lokacije addr se inkrementira, a lokacije len
dekrementira. Tada sadraj lokacije addr predstavlja adresu sledeeg karaktera izvorinog
stringa za koji poreenje treba da se izvri, a lokacije len broj karaktera izvorinog stringa za
koje poreenje treba da se izvri.
MATCHC src1len, src1addr, src2len, src2addr
Instrukcija MATCHC (MATCH CHARACTERS) izvrava operaciju poreenja izmeu
karaktera izvorinog stringa i karaktera podstringa (slika 12 ). Operacija se realizuje ili na
duini izvorinog stringa ukoliko je rezultat operacije nejednakost ili se zavrava ranije i to
kada se prvi put otkrije da je rezultat operacije jednakost. Poetna adresa izvorinog stringa je
src1addr, duina izvorinog stringa je src1len, poetna adresa podstringa je src2addr i duina
podstringa je src2len.
Rezultat izvravanja instrukcije MATCHC je utvrivanje da li se u nekom delu izvorinog
stringa nalazi niz karaktera identian sa karakterima podstringa. Rezultat izvravanja
instrukcije MATCHC se daje postavljanjem indikatora Z na vrednost jedan ili nula, dok se
indikator C uvek postavlja na vrednost nula (C=0). Ukoliko podstring nije pronaen u
izvorinom stringu indikator Z bit e biti postavljen na vrednost jedan (Z=1). Ukoliko je
podstring pronaen u izvorinom indikator Z bit e biti postavljen na vrednost nula (Z=0).
CMP
eql
s
r
c
2
l
e
n
src2addr
s
r
c
2
l
e
n
src1addr
s
r
c
1
l
e
n

Slika 12 Instrukcija MATCHC

31
Tokom izvravanja instrukcije MATCHC, i to nakon svakog neuspenog poreenja
karaktera podstringa i karaktera izvorinog stringa na nekoj od moguih pozicija podstringa u
izvorinom stringu, sadraj lokacije src1addr se inkrementira, a lokacije src1len dekrementira.
Tada sadraj lokacije src1addr predstavlja adresu sledeeg karaktera izvorinog stringa od
kojeg poinje sledea mogua pozicija podstringa u izvorinom stringu, a lokacije src1len broj
preostalih karaktera prvog izvorinog stringa od kojih jo uvek nije pokuano pronalaenje
podstringa u izvorinom stringu. U izvorinom stringu ima smisla pretraivati podstring
jedino ukoliko je broj preostalih karaktera izvorinog stringa vei od ili jednak duini
podstringa.
Decimalne instrukcije


Instrukcije kontrole petlji
ACB limit, step, index, displ
Instrukcija ACB (Add Compare and Branch) realizuje relativni skok sa pomerajem displ u
odnosu na tekuu vrednost programskog brojaa PC pod uslovom da je suma vrednosti
parametara index i step manja ili jednaka vrednosti parametra limit. Ukoliko je uslov za skok
ispunjen aurira se vrednost parametra index sumom vrednosti parametara index i step.
Izvravanje instrukcije ACB se moe predstaviti na sledei nain:
if ((index + step) leq limit) then (PC <= PC + displ),
index <= index + step

AOB limit, index, displ
Instrukcija AOB (Add One and Branch) realizuje relativni skok sa pomerajem displ u
odnosu na tekuu vrednost programskog brojaa PC pod uslovom da je suma vrednosti
parametara index i 1 manja ili jednaka vrednosti parametra limit. Ukoliko je uslov za skok
ispunjen aurira se vrednost parametra index sumom vrednosti parametara index i 1.
Izvravanje instrukcije ACB se moe predstaviti na sledei nain:
if ((index + 1) leq limit) then (PC <= PC + displ),
index <= index + 1

SOB index, displ
Instrukcija SOB (Subtract One and Branch) realizuje relativni skok sa pomerajem displ u
odnosu na tekuu vrednost programskog brojaa PC pod uslovom da je vrednosti parametara
index umanjena za 1 vea ili jednaka 0. Ukoliko je uslov za skok ispunjen aurira se vrednost
parametra index vrednou parametara index umanjenom za 1. Izvravanje instrukcije SOB se
moe predstaviti na sledei nain:
if ((index - 1) geq 0) then (PC <= PC + displ),
index <= index - 1

CASE selector, base, limit, displ[0], displ[1],... displ[limit-base]

32
Instrukcija CASE realizuje relativni skok sa pomerajem displ[selector-base] u odnosu na
tekuu vrednost programskog brojaa PC pod uslovom da je vrednosti parametara selector
vea ili jednaka vrednosti parametra base i manja ili jednaka vrednosti parametra limit. U
suprotno sluaju se prelazi na sledeu instrukciju. Izvravanje instrukcije CASE se moe
predstaviti na sledei nain:
if ((selector geq base ) and (selector leq limit ))
then PC <= PC + displ[selector-base]
else PC <= PC + (limit-base+1)

BBS base, pos, displ
Instrukcija BBS (Branch on Bit Set) realizuje relativni skok sa pomerajem displ u odnosu
na tekuu vrednost programskog brojaa PC pod uslovom da je vrednost jednobitnog polja na
poziciji odreenoj vrednou parametra pos u bajtu oitanom sa memorijske adrese date
vrednou parametra base 1. Izvravanje instrukcije BBS se moe predstaviti na sledei nain:
if (POLJE(pos, 1, base) eql 1) then (PC <= PC + displ)

BBS base, pos, displ
Instrukcija BBC (Branch on Bit Clear) realizuje relativni skok sa pomerajem displ u
odnosu na tekuu vrednost programskog brojaa PC pod uslovom da je vrednost jednobitnog
polja na poziciji odreenoj vrednou parametra pos u bajtu oitanom sa memorijske adrese
date vrednou parametra base 0. Izvravanje instrukcije BBS se moe predstaviti na sledei
nain:
if (POLJE(pos, 1, base) eql 0) then (PC <= PC + displ)


33
1.1.6 MEHANIZAM PREKIDA
Mehanizam prekida kod procesora omoguuje prekid u izvravanju tekueg programa, koji
e se nazivati glavni program, i skok na novi program, koji e se nazivati prekidna rutina.
Poslednja instrukcija u prekidnoj rutini je instrukcija RTI. Ona omoguuje povratak u glavni
program. Izvravanje glavnog programa se produava sa onog mesta gde je bilo prekinuto.
Moe se uzeti da zahtev za prekid stie u toku izvravanja neke od instrukcija. Zbog toga se
mehanizam prekida obino tako realizuje da se instrukcija u toku ijeg je izvravanja stigao
zahtev za prekid, najpre, izvri do kraja, pa se tek onda prihvata zahtev za prekid i skae na
prvu instrukciju prekidne rutine. Izuzetak od ovoga predstavljaju instrukcija nad nizovima
alfanumerikih znakova. Kod ovih instrukcija se zahtev za prekid prihvata u prvom
pogodnom trenutku, koji moe da nastupi i pre trenutka u kom je instrukcija izvrena do kraja.
Efekti mehanizma prekida i instrukcije RTI na izvravanje glavnog programa i prekidne
rutine su prikazani na slici 13. Uzeto je da u toku izvravanja instrukcije glavnog programa sa
adrese 1237 stie zahtev za prekid. Ova instrukcija se se najpre izvri do kraja. Potom
procesor produava sa izvravanjem instrukcija sa adrese 2100 na kojoj se nalazi prva
instrukcija prekidne rutine umesto sa adrese 1238 na kojoj se nalazi prva sledea instrukcija
glavnog programa. Instrukcijom RTI sa adrese 2122 se obezbeuje da procesor kao sledeu
izvrava instrukciju glavnog programa sa adrese 1238. To je instrukcija glavnog programa
koja bi se normalno i izvravala posle instrukcije sa adrese 1237 da u toku njenog izvravanja
nije stigao zahtev za prekid.
glavni program prekidna rutina
M

1234 2100
1235 2101
1236 2102
1237
M

1238 2121
1239 2122 RTI
1240
1241
1242
M

Slika 13 Prekid i povratak iz prekidne rutine
Aktivnosti u procesoru kojima se prekida izvravanje glavnog programa i skae na
prekidnu rutinu nazivaju se opsluivanje zahteva za prekid, a aktivnosti kojima se obezbeuje
povratak iz prekidne rutine u glavni program i produavanje izvravanja glavnog programa sa
mesta i pod uslovima koji su bili pre skoka na prekidnu rutinu nazivaju se povratak iz
prekidne rutine.
Zahteve za prekid mogu da generiu:
kontroleri periferija da bi procesoru signalizirali spremnost za prenos podataka
(maskirajui prekidi),
ureaji raunara koji kontroliu ispravnost napona napajanja, transfera na magistrali,
rada memorije itd. (nemaskirajui prekidi),
procesor, kao rezultat otkrivene nekorektnosti u izvravanju tekue instrukcije
(nelegalan kod operacije, nelegalno adresiranje, greka prilikom deljenja, itd.),
procesor, ako je zadat takav reim rada procesora, kroz postavljanje bita prekid posle
svake instrukcije u programskoj statusnoj rei PSW, da se posle svake instrukcije skae
na odreenu prekidnu rutinu i

34
procesor kao rezultat izvravanja instrukcije prekida INT.
Prekidi pod i se nazivaju spoljanji, a pod , i unutranji.
1.1.6.1 Opsluivanje zahteva za prekid i povratak iz prekidne rutine
Opsluivanje zahteva za prekid se realizuje delom hardverski i delom softverski, a
povratak iz prekidne rutine softverski. Hardverska realizacija dela opsluivanja zahteva za
prekid znai da se izvravanje instrukcije u kojoj se javlja neki zahtev za prekid produava za
onoliko koraka koliko je potrebno da se taj deo realizuje. Softverska realizacija dela
opsluivanja zahteva za prekid i povratka iz prekidne rutine se realizuju izvravanjem
odgovarajuih instrukcija procesora.
1.1.6.1.1 Opsluivanje zahteva za prekid
Opsluivanje zahteva za prekid se sastoji iz:
uvanja konteksta procesora i
utvrivanja adrese prekidne rutine
Kontekst procesora ine programski broja PC, programska statusna re PSW i preostali
programski dostupni registri, kao, na primer, registri podataka, adresni registri, indeksni
registri, bazni registri, registri opte namene itd. Kontekst procesora se uva najee na steku
i to:
programski broja PC da bi se po povratku iz prekidne rutine u glavni program
omoguilo procesoru izvravanje glavnog programa od instrukcije na kojoj se stalo i
programska statusna re PSW i preostali programski dostupni registri da bi se u
procesoru obezbedilo isto stanje koje bi bilo da nije bilo prekida i skoka na prekidnu
rutinu.
Programski broja PC i programska statusna re PSW se uvaju hardverski. Preostali
programski dostupni registri se uvaju hardverski kod onih procesora kod kojih broj ovih
registara nije veliki i softverski sa nekoliko instrukcija na poetku prekidne rutine kod onih
procesora kod kojih je broj ovih registara veliki.
Utvrivanje adrese prekidne rutine se realizuje na osnovu sadraja tabele adresa prekidnih
rutina (IV tabela) i broja ulaza u IV tabelu. Stoga se u memoriji, poev od adrese na koju
ukazuje sadraj registra procesora IVTP (Interrupt Vector Table Pointer), nalazi IV tabela sa
adresama prekidnih rutina za sve vrste prekida. Brojevi ulaza u IV tabelu se dobijaju na vie
naina i to:
procesoru ih alju kontroleri periferija za prekide iz take , ako ulazi u IV tabelu za
maskirajue prekide nisu fiksni, to je odreeno odgovarajuom vrednou bita ulazi u IV
tabelu promenljivi u programskoj statusnoj rei procesora PSW,
procesor generie fiksne vrednosti za prekide iz take , ako su ulazi u IV tabelu za
maskirajue prekide fiksni, to je odreeno odgovarajuom vrednou bita ulazi u IV
tabelu promenljivi u programskoj statusnoj rei procesora PSW,
procesor generie fiksne vrednosti za prekide iz taaka , i i
procesor generie vrednosti na osnovu adresnog dela instrukcije INT za prekid iz take
.
Memorijska adresa na kojoj se nalazi adresa prekidne rutine dobija se sabiranjem broja ulaza
u IV tabelu sa sadrajem registra IVTP. Sa ove adrese se ita sadraj i upisuje u registar PC.
Utvrivanje adrese prekidne rutine se realizuje hardverski.
U okviru opsluivanja zahteva za prekid hardverski se jo:

35
briu biti maskiranje svih maskirajuih prekida i prekid posle svake instrukcije u
programskoj statusnoj rei procesora PSW kod prekida svih vrsta i
upisuje u bite tekui nivo prioriteta u statusnoj rei procesora PSW nivo prioriteta
prekidne rutine na koju se skae u sluaju maskirajueg prekida.
Brisanjem bita maskiranje svih maskirajuih prekida u programskoj statusnoj rei
procesora PSW se obezbeuje da procesor po ulasku u prekidnu rutinu ne reaguje na
maskirajue prekide, a brisanjem bita prekid posle svake instrukcije u programskoj statusnoj
rei procesora PSW se obezbeuje da procesor po ulasku u prekidnu rutinu ne izvrava
prekidnu rutinu u reimu prekid posle svake instrukcije. Time se omoguava obavljanje
odreenih aktivnosti na poetku svake prekidne rutine. Posle toga mogue je u samoj
prekidnoj rutini posebnim instrukcijama postaviti bit maskiranje svih maskirajuih prekida u
programskoj statusnoj rei procesora PSW i time dozvoliti maskirajue prekide i postaviti bit
prekid posle svake instrukcije u programskoj statusnoj rei procesora PSW i time zadati reim
rada procesora prekid posle svake instrukcije.
Upisivanjem u bite tekui nivo prioriteta u statusnoj rei procesora PSW nivoa prioriteta
prekidne rutine na koju se skae u sluaju maskirajueg prekida obezbeuje se da se u sluaju
maskirajuih zahteva za prekid pristiglih u toku izvravanja prekidne rutine prihvate samo oni
koji su vieg nivoa prioriteta od nivoa prioriteta prekidne rutine.
Opsluivanje zahteva za prekid poinje na kraju izvravanja svake instrukcije ispitivanjem
da li je u toku njenog izvravanja stigao zahtev za prekid. U sluaju da jeste izvravanje
tekue instrukcije se produava za odreeni broj koraka u okviru kojih se:
stavljaju na stek programski broja PC i programska statusna re PSW, a ukoliko se radi
o procesorima kod kojih se hardverski uvaju preostali programski dostupni registri, i
preostali programski dostupni registri,
briu biti maskiranje svih maskirajuih prekida i prekid posle svake instrukcije u
programskoj statusnoj rei procesora PSW kod prekida svih vrsta,
upisuje u bite tekui nivo prioriteta u programskoj statusnoj rei procesora PSW nivo
prioriteta prekidne rutine na koju se skae za sluaj maskirajuih prekida i
upisuje u programski broja PC poetna adresa prekidne rutine.
Na poetku prekidne rutine se samo oni preostali programski dostupni registri ije se
vrednosti menjaju u prekidnoj rutini posebnim instrukcijama stavljaju na stek, ukoliko se radi
o procesorima kod kojih se softverski uvaju preostali programski dostupni registri.
1.1.6.1.2 Povratak iz prekidne rutine
Povratak iz prekidne rutine se realizuje tako to se, najpre, posebnim instrukcijama pri
kraju prekidne rutine restauriraju vrednostima sa steka sadraji onih preostalih programski
dostupnih registara ije su vrednosti posebnim instrukcijama sauvane na steku na poetku
prekidne rutine, ukoliko se radi o procesorima kod kojih se softverski uvaju preostali
programski dostupni registri, a potom izvri instrukcija RTI. Ovom instrukcijom se sa steka
restauriraju sadraji programske statusne rei procesora PSW i programskog brojaa PC. Od
tog trenutka nastavlja se izvravanje prekinutog glavnog programa od instrukcije koja bi se
izvravala i sa kontekstom procesora koji bi bio, da nije bilo skoka na prekidnu rutinu.
1.1.6.2 Prioriteti prekida
U sluajevima kada se generie vie prekida istovremeno, prekidi se opsluuju po
redosledu opadajuih prioriteta. Tako, na primer, za ranije pobrojane prekide taj redosled je
sledei: najvii je , zatim , , i na kraju .

36
Prekidi pod koji dolaze od kontrolera periferija (spoljanji maskirajui prekidi) mogu se
javiti istovremeno pa se i oni opsluuju po redosledu opadajuih prioriteta. Ukoliko svaka
periferija ima posebnu liniju u procesoru za slanje svog zahteva za prekid prekida, na osnovu
pozicije linije se odreuje prioritet datog zahteva za prekid.
1.1.6.3 Selektivno maskiranje maskirajuih prekida
Za maskirajue prekide postoji u procesoru poseban programski dostupan registar IMR koji
se naziva registar maske. Svakoj liniji po kojoj mogu da se alju zahtevi za prekid od
periferija pridruen je poseban razred registra maske. Zahtev za prekid koji stie po odreenoj
liniji u procesoru e biti opsluen jedino ukoliko se u odgovarajuem razredu registra maske
nalazi vrednost 1. Posebnom instrukcijom se u registar maske IMR upisuje odgovarajua
vrednost. Time se programskim putem selektivno dozvoljava ili zabranjuje opsluivanje
maskirajuih prekida.
1.1.6.4 Maskiranje svih maskirajuih prekida
Maskirajui zahtevi za prekid, bez obzira na to da li su selektivno maskirani sadrajem
registra maske ili ne, mogu se svi maskirati bitom maskiranje svih maskirajuih prekida u
programskoj statusnoj rei procesora PSW. Posebnim instrukcijama u ovaj razred registra
PSW upisuju se vrednosti 1 ili 0. Time se programski putem dozvoljava ili zabranjuje
opsluivanje maskirajuih prekida koji nisu selektivno maskirani sadrajem registra maske
IMR.
1.1.6.5 Prekid posle svake instrukcije
Postoji mogunost da se zada takav reim rada procesora da se posle svake izvrene
instrukcije skae na odreenu prekidnu rutinu. Ovakav reim rada procesora se naziva prekid
posle svake instrukcije. U njemu se procesor nalazi ukoliko bit prekid posle svake instrukcije
u programskoj statusnoj rei procesora PSW ima vrednost 1. Posebnim instrukcijama u ovaj
bit programske statusne rei procesora PSW upisuju se vrednosti 1 ili 0. Time se programskim
putem dozvoljava ili ne dozvoljava reim rada procesora prekid posle svake instrukcije.
1.1.6.6 Instrukcija prekida
U skupu instrukcija postoji instrukcija INT kojom se moe programskim putem izazvati
prekid i skok na eljenu prekidnu rutinu. Prekidna rutina na koju treba skoiti odreuje se
adresnim delom ove instrukcije koji sadri broj ulaza u tabelu adresa prekidnih rutina.
Izvravanje ove instrukcije realizuje sve ono to je nabrojano u okviru hardverskog dela
opsluivanja zahteva za prekid, s tim to je broj ulaza u tabeli adresa prekidnih rutina dat
adresnim poljem same instrukcije.
1.1.6.7 Gnedenje prekida
Kada procesor izvrava prekidnu rutinu moe stii novi zahtev za prekid. Na ovaj zahtev za
prekid moe se reagovati na sledee naine:
prekida se izvravanje tekue prekidne rutine i skae na novu prekidnu rutinu ili
ne prekida se izvravanje prekidne rutine, ve se zahtev za prekid prihvata tek po
povratku u glavni program.
Procesor reaguje na oba naina u zavisnosti od situacije u kojoj se nalazi. Ta situacija zavisi
od itavog niza elemenata kao to su:
ima vie tipova zahteva za prekid,

37
kod ulaska u prekidnu rutinu briu se biti maskiranje svih maskirajuih prekida i prekid
posle svake instrukcije u programskoj statusnoj rei procesora PSW kod prekida svih
vrsta,
programskim putem se moe, upisivanjem vrednosti 0 ili 1 u bite maskiranje svih
maskirajuih prekida i prekid posle svake instrukcije u programskoj statusnoj rei
procesora PSW, odrediti kada e se reagovati na maskirajue prekide ili prekidati program
posle svake instrukcije, a kada ne i
maskirajui prekidi su ureeni po prioritetima.
Kao ilustracija tih situacija moe se uzeti pojednostavljen primer da u procesor stiu samo
maskirajui zahtevi za prekid koji nisu ni selektivno maskirani registrom maske IMR, ni svi
zajedno bitom maskiranje svih maskirajuih prekida u programskoj statusnoj rei procesora
PSW. Maskirajui zahtevi za prekid imaju prioritete. Pored toga, kada se ue u prekidnu
rutinu po nekom maskirajuem prekidu, u procesoru se u bitima tekui nivo prioriteta u
programskoj statusnoj rei procesora PSW uva nivo prioriteta te prekidne rutine. Kada stigne
neki novi zahtev za prekid, a procesor se ve nalazi u prekidnoj rutini, procesor e:
prihvatiti novi zahtev za prekid, ako je on vieg prioriteta nego nivo prioriteta tekue
prekidne rutine ili
ignorisati novi zahtev za prekid, ako je on nieg ili istog nivoa prioriteta kao i nivo
prioriteta tekue prekidne rutine.
Prekidanje izvravanja tekue prekidne rutine i skok na novu prekidnu rutinu naziva se
gnedenje prekida.
1.1.6.8 Prihvatanje zahteva za prekid
Zahtev za prekid moe da bude opsluen i time skok na prekidnu rutinu realizovan ili na
kraju instrukcije u toku ijeg izvravanja je generisan ili kasnije, na kraju neke od sledeih
instrukcija. Kada e odreeni zahtev za prekid biti opsluen zavisi od vie faktora, kao to su:
da li je re o spoljanjem ili unutranjem prekidu, da li su maskirajui prekidi maskirani, i to
ili selektivno ili svi, da li je stigao samo jedan ili vie zahteva za prekid, itd. Stoga za svaku
vrstu zahteva za prekid odreeni uslovi treba da budu ispunjeni da bi se prelo na njegovo
opsluivanje. Prelazak na opsluivanje odreenog zahteva za prekid naziva se prihvatanje
zahteva za prekid.
U sluaju da u toku izvravanja neke instrukcije stigne vie zahteva za prekid redosled
njihovog prihvatanja definisan je meusobnim prioritetima razliitih vrsta prekida. Najvii
prioritet ima prekid izazvan izvravanjem instrukcije prekida INT (), pa redom slede
unutranji procesorski prekidi (), spoljanji nemaskirajui prekid (), spoljanji maskirajui
prekidi () i prekid posle svake instrukcije () koji ima najnii prioritet. Detaljnije
objanjenje prihvatanja pojedinih tipova zahteva za prekid je dato u daljem tekstu.
Unutranji procesorski kao rezultat izvravanja instrukcije prekida INT: Ovaj zahtev
za prekid se bezuslovno prihvata na kraju faze izvrenja instrukcije INT. Broj ulaza u IV
tabelu je dat adresnim delom instrukcije INT i ima takve vrednosti da moe da se ue u bilo
koji ulaz tabele sa adresama prekidnih rutina.
Unutranji procesorski prekidi pri korienju nelegalnog adresiranja, itanju
instrukcije sa nepostojeim kodom operacije, greke prilikom adresiranja itd.: Zahtevi za
ove prekide prihvataju se ako ne postoji zahtev vieg prioriteta. Brojevi ulaza u IV tabelu za
ove prekide su fiksirani.

38
Spoljanji nemaskirajui prekid: Ureaj raunara koji kontrolie ispravnost rada delova
raunara postavlja zahtev za nemaskirajui prekid preko posebne linije. Zahtev e biti
prihvaen ako ne postoji zahtev vieg prioriteta. Broj ulaza u IV tabelu za nemaskirajui
prekid je fiksiran.
Spoljanji maskirajui prekidi: Zahteve za maskirajuim prekidima postavljaju periferije
preko posebnih linija. Najvei prioritet, u sluaju simultanog pristizanja vie od jednog
zahteva, ima prekid sa najveim rednim brojem linije. Da bi zahtev za maskirajui prekid bio
prihvaen potrebno je da bude ispunjen svaki od sledeih uslova:
da je odgovarajui bit u registru maske IMR postavljen,
da je bit maskiranje svih maskirajuih prekida u programskoj statusnoj rei procesora
PSW postavljen,
da je nivo prioriteta periferije koja je uputila zahtev za prekid vei od nivoa prioriteta
tekueg programa i
da ne postoje zahtevi za prekid druge vrste vieg prioriteta.
Ako je bit ulazi u IV tabelu promenljivi u programskoj statusnoj rei procesora PSW jednak
jedan pa ulazi u IV tabelu nisu fiksni, tada procesor dobija broj ulaza u IV tabelu od periferije.
Procesor o prihvatanju zahteva za prekid obavetava periferiju aktiviranjem odgovarajue
linije potvrde. Periferija tada alje broj ulaza u IV tabelu koji procesor koristi za odreivanje
adrese prekidne rutine. Ako je bit ulazi u IV tabelu promenljivi u programskoj statusnoj rei
procesora PSW jednak nula, pa su ulazi u IV tabelu fiksni, brojeve ulaza generie sam
procesor. Po uvanju sadraja programske statusne rei procesora PSW na steku, procesor u
bite tekui nivo prioriteta u programskoj statusnoj rei procesora PSW upisuje nivo prioriteta
prekidne rutine na koju se skae.
Unutranji procesorski prekid posle svake instrukcije: Zahtev za ovaj prekid se javlja
posle izvrenja svake pojedine procesorske instrukcije pod uslovom da je postavljen bit prekid
posle svake instrukcije u programskoj statusnoj rei procesora PSW. Zahtev se prihvata
ukoliko ne postoje zahtevi vieg prioriteta. Broj ulaza u IV tabelu je fiksan.

You might also like