ORT1_06_PR11
Download
Report
Transcript ORT1_06_PR11
OSNOVI RAČUNARSKE
TEHNIKE 1
INSTRUKCIJE I
NAČINI ADRESIRANJA
10
Instrukcije za prenos podataka
Prenos
podataka između registara
Najveća brzina izvođenja u odnosu na ostale
instrukcije prenosa
Instrukcije su kraće od ostalih
Nekada instrukcija ima samo polje koda
operacije:
TAB ( A B )
TBA ( B A )
U nekim instrukcijama se eksplicitno ukazuje
na registre koji učestvuju u prenosu preko
njihovih adresa):
MOV A, E ( E A )
Instrukcije za prenos podataka
Prenos
podataka između memorije i
registara
Prenos podataka iz memorije u neki od CPU
registara (LOAD)
Prenos podataka iz nekog od CPU registara u
memoriju (STORE)
Jedinstven tip instrukcije (MOVE) (Intel):
MOVE x, y (y ( source) x (destination)
Mogućnost prenosa bloka podataka (Z80)
Mogućnost istovremenog kopiranja sadržaja
više registara u memoriju (MC 68020)
Instrukcije za prenos podataka
Operacije
sa stek-om
Smeštanje podataka na stek (PUSH)
SP se
inkrementira
SP se
dekrementira
Uzimanje podataka sa steka (POP)
Primeri instrukcija za rad sa stekom
(MC 6800)
(sadržaj akumulatora A stek )
PUL A (podatak sa steka akumulator A )
PSH B (sadržaj akumulatora B stek )
PUL B (podatak sa steka akumulator B )
PSH A
Instrukcije za prenos podataka
Ulazno-izlazne
operacije
Kod nekih procesora ( MC 68020, VAX )
ulazno/izlazni prostor se posmatra kao
memorija
Svakoj
U/I jedinici je pridružena jedna ili više
memorijskih adresa
Kod nekih procesora U/I operacije su odvojene
od operacija sa memorijom
Programski kontrolisan U/I prostor
IN i OUT instrukcije
Specijalni procesori (kanali) obavljaju
ulazno/izlazne aktivnosti - IBM 370
Instrukcije za upravljanje tokom
programa
To
su instrukcije koje omogućavaju
promenu sadržaja brojača naredbi
(Program Counter)
Ove instrukcije skreću tok izvođenja
programa bezuslovno ili uslovno
Upravljačke instrukcije mogu da se podele na:
Instrukcije bezuslovnog skoka (jump) ili grananja
(branch)
Instrukcije uslovnog skoka ili grananja
Specijalne upravljačke instrukcije za upravljanje
potprogramima, prekidima i stanjima procesora
Instrukcije za upravljanje tokom
programa
Instrukcije
bezuslovnog skoka
Preusmeravaju tok izvođenja programa bez
ispitivanja bilo kakvih uslova
U PC se nalazi adresa memorijske lokacije na
kojoj se nalazi sledeća instrukcija
Ne preporučuje se česta upotreba ovih
instrukcija, jer mogu da dovedu do greške u
izvršavanju programa
Instrukcije za upravljanje tokom
programa
Instrukcije
uslovnog skoka ili grananja
Omogućavaju skok (grananje) potprograma
samo ako je prethodnom obradom ispunjen
neki uslov
Ne zna se unapred kojim će putem krenuti
dalje odvijanje programa
Instrukcije se zasnivaju na testiranju
pojedinih bita u registru stanja
Instrukcije SKIP tipa testiraju uslov i
preskaču prvu narednu instrukciju ako je
uslov ispunjen
Instrukcije za upravljanje tokom
programa
1.
Primer za instrukciju uslovnog skoka
instrukcija
početak petlje
telo petlje
dekrementiraj registar i preskoči ako je 0
skoči na početak petlje
nastavak programa
Ako uslov nije ispunjen program se vraća na početak
petlje (vrti se u petlji)
Instrukcije za upravljanje tokom
programa
2.
Primer za instrukciju uslovnog skoka
instrukcija
početak petlje
telo petlje
dekrementiraj registar i preskoči ako je 0
skoči na početak petlje
nastavak programa
Ako je uslov ispunjen program preskače jednu
instrukciju i izlazi iz petlje
Instrukcije za upravljanje tokom
programa
Instrukcije za upravljanje potprogramima
Potprogrami (subroutine, subprogram) su niz
instrukcija koje predstavljaju celinu
Potprogram može da se poziva više puta u toku
izvršenja nekog programa
Računar pre upisa nove adrese u PC (koja predstavlja
početnu adresu potprograma), sačuva tekući sadržaj
PC na steku
Postoje dva tipa instrukcija za rad sa potprogramima
Instrukcije za pozivanje potprograma (CALL)
Instrukcije za povratak iz potprograma
(RETURN)
Instrukcije za upravljanje tokom
programa
Otvoreni potprogram
GLAVNI PROGRAM
POČETAK PROGRAMA
POTPROGRAM
Zatvoreni potprogram
T
O
K
GLAVNI PROGRAM
POČETAK PROGRAMA
POTPROGRAM
POZIV POTPROGRAMA
POČETAK
POTPROGRAM
POTPROGRAM
KRAJ PROGRAMA
P
R
O
G
R
A
M
A
POZIV POTPROGRAMA
•
•
•
KRAJ
POZIV POTPROGRAMA
KRAJ PROGRAMA
Instrukcije za upravljanje tokom
programa
Instrukcije
za upravljanje prekidom
Zahtevi za prekid (interrupt requests) su signali koji
nastaju
u
samom procesoru
u ulazno/izlaznoj jedinici ili
u spoljašnjem okruženju (van računarskog sistema)
Kada se pojavi zahtev za prekid, tekući program se
prekida i prelazi na izvršavanje posebnog kontrolno
upravljačkog programa za obradu prekida
Da bi mogao da se ostvari povratak u prekinuti
program moraju da se čuvaju na steku:
Sadržaj
programskog brojača (PC)
Sadržaj svih radnih registara u CPU koji će koristiti
program za obradu prekida
Instrukcije za upravljanje tokom
programa
Instrukcije za upravljanje prekidom
Zahtev za prekid može da nastane bilo kada, bilo na
kom mestu u programu i nije pod kontrolom
programa
KORISNIČKI PROGRAM
PROGRAM ZA OBRADU PREKIDA
POČETAK
TEKUĆA INSTRUKCIJA
ZAHTEV
ZA PREKID
NAREDNA INSTRUKCIJA
KRAJ
Instrukcije za upravljanje tokom
programa
Instrukcije
za upravljanje prekidom
Obradu prekida vrši program operativnog sistema
koji se zove analizator prekida
Analizator prekida bira program za obradu koji
odgovara prekidu
Pošto nisu svi prekidi podjednako važni za računarski
sistem, neki od njih mogu privremeno ili trajno da se
spreče (maskiraju) pomoću instrukcija koje mogu da
postavljaju masku, da je čitaju i testiraju
Na kraju svake rutine za obradu prekida nalazi se
instrukcija za povratak iz prekida RT (Return from
Interrupt)
Instrukcije za upravljanje tokom
programa
Instrukcije
za upravljanje stanjima procesora
Kod većine računara CPU može da se nađe u nekom
od sledećih stanja, pri čemu se stanja koja su data u
paru uzajamno isključuju:
Neprivilegovanom / privilegovanom stanju
Stanju spremnosti / stanju obrade
Stanju zastoja (čekanja) / stanju obrade
Stanju dozvoljenog prekida / stanju zabranjenog
prekida
U privilegovanom režimu može u potpunosti da se
kontroliše rad računara pomoću privilegovanih
instrukcija koje ne mogu da se upotrebljavaju u
korisničkom programu.
Načini adresiranja
se pristupa različitim načinima
adresiranja, koji su zadati u posebnom polju u
formatu instrukcije
Podacima
IMPLICITNO
adresiranje
adresiranje
PRIMENOM
BAZNIH
REGISTARA
NEPOSREDNO
adresiranje
DIREKTNO
adresiranje
FORMAT INSTRUKCIJE
adresiranje
PRIMENOM
SEGMENTNIH
REGISTARA
RELATIVNO
adresiranje
INDIREKTNO
adresiranje
INDEKSIRANO
adresiranje
Načini adresiranja
Implicitno
adresiranje
Sama instrukcija ( kod operacije ) određuje fiksnu i
nepromenjivu adresu operanda
Neposredno
adresiranje
Polje adrese predstavlja sam operand
Podatak se nalazi u memoriji na lokaciji koja
neposredno sledi iza koda operacije
Direktno
adresiranje
U polju operanda nalazi se fizička adresa podatka
Relativno
adresiranje
Adresa memorijske lokacije se određuje u odnosu na
tekući sadržaj programskog brojača (PC)
Indeksirano
Načini adresiranja
adresiranje
Na adresu podatka se dodaje sadržaj nekog indeks
registra (dobija se efektivna adresa)
Indirektno
adresiranje
U polju operanda se nalazi pokazivač adrese na
memorijsku lokaciju u kojoj se nalazi adresa na kojoj
je smešten podatak
Adresiranje
primenom segmentnih registara
Fizička adresa je podeljena na dve logičke, od kojih je
jedna u polju operanda, a druga u segmentnom
registru
Korisnički program može da menja sadržaj
segmentnih registara
Načini adresiranja
Adresiranje
primenom baznih registara
Koristi se za pomeranje programa u okviru
memorije kada programi koriste apsolutne
adrese.
Logička adresa = adresa koju vidi program
Bazna adresa = adresa koju je dodelio
operativni sistem (nalazi se u
baznom registru)
Stvarna adresa = logička adresa + bazna adresa
Sadržaj baznog registra može da menja samo
operativni sistem