|
3.6 Rad sa složnikom i posluživanje zahtjeva za prekidomZa razumijevanje rada složnika i razloga njegovog postojanja, potrebno je razumijeti pojam potprograma. Neka program napisan mnemoničkim jezikom u svom radu zahtijeva korištenje operacije koja se ne nalazi u skupu naredbi mikroprocesora, npr., operaciju množenja, te neka se ta operacija više puta pojavljuje u programa. Program je moguće sastaviti tako da se niz naredbi koje opisuje zahtjevanu operaciju napiše više puta. Navedeni pristup dovodi do ponavljanja istog niza naredbi, a time i do nepotrebnog zauzeća memorije. Program je moguće sastaviti i korištenjem potprograma. Potprogram čini niz naredbi koji se u programu pojavljuje samo jedanput, ali se može pozivati i izvoditi s različitih mjesta u programu.Opći format potprograma glasi:pri čemu Tijelo_potprograma čini niz naredbi koji se poziva i izvodi iz različitih mjesta u programu.
Mikroprocesor u skupu naredbi raspolaže naredbom poziva potprograma iz glavnog programa, kao i naredbom koja vraća nadzor programa iz potprograma u glavni program. Kod izvođenja naredbe poziva potprograma (CALL), adresa sljedeće naredbe, tj. trenutni sadržaj programskog brojila, se prenosi, gura (PUSH) na složnik. Sadržaj programskog brojila se zamjenjuje početnom adresom pozvanog potprograma. Kada se završi izvođenje naredbi potprograma, naredba vraćanja nadzora programa u glavni program (RET) povlači (POP), tj. obnavlja prethodno pohranjenu adresu iz složnika i prenosi je u programsko brojilo, te se izvođenje glavnog programa nastavlja naredbom koja neposredno slijedi iza naredbe poziva potprograma.Složnik je područje RAM memorije koje se adresira putem adresa zapisanih u kazalu složnika. Početna adresa složnika u kazalu složnika se postavlja u programu. Početna adresa složnika je najčešće pridružena najvišoj raspoloživoj adresi upisno-ispisne memorije. To znači da se umetanjem podataka u složnik, složnik širi u memorijske lokacije s nižim adresama. Kada se podaci povlače iz složnika, složnik se smanjuje, a sadržaj kazala složnika se inkrementira prema početnoj adresi. Rad složnika odgovara operaciji posljednji unutra, prvi van (LIFO - last in first out). Memorijska lokacija u koju je pohranjen posljednji podatak naziva se vrhom složnika. Slika 3.6-1 prikazuje ustrojstvo te način punjenja i pražnjenja složnika.
Jedino ograničenje u broju podataka koje je moguće pohraniti u složniku predstavlja količina memorije dodjeljena složniku. Programer mora poznavati područje memorije dodjeljeno složniku, da prilikom rada sa složnikom program ne bi koristio područja memorije namijenjena za druge podatke ili zadatke.Kada sklopovi ili jedinice izvan mikroračunala žele trenutno skrenuti pažnju mikroprocesora koriste se prekidi (interrupt). Prekidi su pozivi potprograma potaknuti signalom zahtjeva za prekidom od strane vanjske jedinice ili naredbom unutar programa. Kad god do zahtjeva za prekid programa dođe računalo je u stanju da takav zahtjev praktički trenutno prihvati i obavi posao koji se takvim zahtjevom traži. Postavljanjem zahtjeva za prekidom poziva se prethodno sastavljen potprogram za posluživanje prekida i prekida izvođenje tekućeg programa. Postoje dvije osnovne vrste prekida: uvjetni, maskirajući prekid i bezuvjetni nemaskirajući prekid. Kod maskirajućeg prekida moguće je programski vanjskoj jedinici izdati dozvolu ili zabranu prekida izvođenja tekućeg programa. Nemaskirajući prekid se uvijek izravno poslužuje, tj. kada vanjska jedinica zatraži prekid, rad mikroprocesora se trenutno prekida. Nemaskirajući prekidi se koriste kod obrade presudnih događaja, npr. prestanka napajanja. Dijagrami slijeda posluživanja signala zahtjeva za uvjetnim i bezuvjetnim prekidom prikazani su na slikama 3.6-2 i 3.6-3.
|