ОСНОВНЕ ХАРДВЕРСКЕ

КОМПОНЕНТЕ РАЧУНАРА
Проф. др Зоран Ж. Аврамовић
(материјал за интерну употребу)
У циљу дефинисања основних хардверских компоненти рачунарског система
и њихових функција поћи ћемо од поређења ручне и аутоматске обраде података.
Уобичајено, ручна обрада података одвија се тако што се напише упутство
(опис поступка обраде, инструкције) и подаци са који се обрађују. У самој обради
човек са папира чита једну по једну инструкцију (корак обраде) и потом обавља две
радње. Прва је везана за тумачење инструкције и доношење одлуке о операцији која
ће се извршити, а друга је везана само извршавање операције, при чему се најчешће
подаци потребни за њено извршење читају са папира, а резултат операције се, такође,
записује на папир.
ПРОЦЕСОР
Управљачка
јединица

А/Л јединица

МЕМОРИЈА

У/И УРЕЂАЈИ

Инструкције
Улазни подаци
(међурезултати)
Резултати

Слика 1.
Како је то приказано на слици 1. основна компонента хардвера рачунарског
система је централни процесор (енгл. central processing unit) (или само: процесор),
чији је задатак да


узима инструкције из меморије,
анализује их и
потом извршава.

Меморија рачунара (енгл. memory) чува (памти, складишти)
• инструкције и
• податке (почетне податке, међурезултате и резултате обраде).
Улазно/излазни (енгл. input/output) уређаји омогућавају комуникацију
рачунара са околином, тако што врше претварање инструкција и података из облика

у којима их човек припрема (записује) у облик у коме се могу ускладиштити у
меморији (у случају улазних уређаја), односно претварају резултате обраде из облика
у коме су записани у рачунару у облик који је човеку разумљив (у случају излазних
уређаја).
Магнетска трака

Улазна
јединица

CD

Флеш
меморија

Магнетски диск
СЕКУНДАРНА
МЕМОРИЈА

МЕМОРИЈА

ПРИМАРНАМЕМОРИЈА

ПРОЦЕСОР

Излазна
јединица

Слика 2.
Нешто детаљнија хардверска конфигурација рачунарског система приказана
је на слици 2, на којој се може уочити да су, у циљу боље прегледности, раздвојени
улазни и излазни уређаји, док су, са друге стране приказани и неки нови уређаји:
магнетни дискови, дискете, траке, ласерски дискови, флеш меморија, ...
Наиме, капацитет меморије, односно, како се често назива, примарне
меморије (радне, оперативне), упркос томе што се стално повећава,
није довољан
да ускладишти све програме и податке који се обрађују. Због тога, практично сваки
рачунарски систем поседује и додатне меморијске уређаје (који се називају
секундарна меморија), на којима се (дуго)трајно чувају програми и подаци.
У току рада процесор приступа само оним инструкцијама и подацима који се
налазе у примарној меморији.
Програми који се тренутно извршавају и подаци који се обрађују пребацују
се (по потреби) из секундарне меморије у примарну.


У даљем излагању ограничићемо се на опис структуре и функција две
кључне компоненте рачунарског система – централног процесора и примарне
меморије.

fetch-execute cycle). приказана је на на слици 3. како јој само име говори. такође приказан на слици 3. или једноставније. Аритметичко-логичка (А/Л) јединица. . ЦЕНТРАЛНИ ПРОЦЕСОР Типична. • анализује их и • шаље одговарајуће команде за њихово извршавање осталим компонентама. процесора. анализе и извршавања инструкције. Циклични процес узимања. састоји се од електронских кола која обављају различите • аритметичке. мада још увек недовољно детаљна структура централног процесора. Детаљнију анализу структуре и начина функционисања управљачке јединице размотрићемо касније. • логичке. Основна функција управљачке јединице је да • узима инструкције из меморије. ПРОЦЕСОР УПРАВЉАЧКА ЈЕДИНИЦА узми инструкцију А/Л ЈЕДИНИЦА анализирај инструкцију R0 R1 изврши инструкцију Rn Слика 3. се често назива узми-изврши циклус (енгл. као и • неке друге операције над подацима.1.

приближно за ред величине већа од брзине приступа меморији. чува податке којима мора често да приступа. Код већине рачунара то је неколико стотина различитих инструкција (детаљнији опис типова инструкција у каснијим излагањима *** .) Поред наведених компоненти. мада неки рачунари могу да садрже и неколико стотина регистара). централни процесор садржи и скуп посебних хардверских јединица. регистара (уобичајено. који играју улогу интерне. величина) скупа инструкција које он може да изврши.А/Л јединица је једина активна компонента рачунарског система. у смислу да је једина компонента која може да ствара нове податке. Како је брзина приступа регистрима. процесор садржи неколико десетина таквих регистара. . како се често називају општим регистрима. процесор у току извршавања програма у овим. Једна од најважнијих карактеристика процесора је (број. брзе меморије самог процесора.

Операција читања садржаја неке меморијске локације (слика 4. а други прихватним регистром меморије (ПРМ). наравно. Тада можемо да изведемо закључак да свака инструкција. је пасивна компонента рачунарског система чија је функција да меморише (памти. Меморија се састоји од великог броја ћелија (меморијских локација) једнаке дужине. . чува. Уведимо сада претпоставку да једна меморијска ћелија може да садржи једну – само једну. а • затим се иницира операција уписивања.уписивање и читање садржаја неке адресе. инструкцију или само један податак. при чему се.2. да би му се касније. Као што се види на слици 4. • да би се као резултат њеног дејства копија садржаја посматране локације уписала у ПРМ. При томе су над меморијом могуће две операције . Резултат операције уписивања (слика 4. посредством те адресе могло приступити. при чему свака ћелија има сопствени редни број у оквиру меморије. Увођењем концепта адресе и адресовања створен је битан механизам за функционисање рачунара . ПРИМАРНА МЕМОРИЈА Примарна или радна меморија. Операција уписивања податка у одабрану меморијску локацију одвија се на сличан начин. • Податак који треба да се упише уноси се у ПРМ. а • адреса локације у коју се врши уписивање уноси се у АРМ. складишти) програме и податке. њен претходни садржај уништава. Реализација ових операција омогућена је посредством два регистра. нумерисање меморијских локација почиње од нуле.б) је уписан податак у посматрану ћелију.адресу локације у којој је смештен. односно сваки податак има сопствену адресу . а • затим се иницира извршење саме операције (читање).створена је могућност да се свака инструкција и сваки податак смешта у одређену меморијску адресу. Очигледно је да придружени број ћелије представља њену јединствену адресу. од којих се један назива адресним регистром меморије (АРМ).а) обавља се тако што се • адреса локације којој се жели приступити уписује у АРМ.

без обзира да ли је у питању читање или уписивање. При томе треба напоменути да је време приступа једнако за све локације примарне меморије. што се разликује од ситуације код већине секундарних меморија.АРМ 102 104 0 1 2 102 0 1 2 20 104 60 n-1 n-1 ПРМ АРМ 60 20 ПРМ б) уписивање новог садржаја у адресу а) читање садржаја адресе 102 Слика 4. Због тога се примарна меморија назива и меморија са једнаким временом приступа.random access memory). где је основа система 2. до завршетка посматране операције. док су . (Под стабилним стањем овде се подразумева да посматрани елемент.) То практично значи да је за представљање података у рачунару природно да се користи бинарни бројевни систем. време меморијског цилуса је време које протекне између два узастопна приступа меморији. као меморија са случајним (насумичним) приступом. мада се може срести и дослован и помало несрећан превод оригиналног енглеског назива (RAM . назива се временом меморијског циклуса. ♦ Окренимо се сада проблему дужине меморијских ћелија. Једноставније речено. Разлог за то лежи у чињеници да су хардверске компоненте рачунара састављене од електронских кола и полупроводничких елемената чија је основна карактеристика да могу да се нађу у два стабилна стања. Како је већ истакнуто. Време које протекне од тренутка иницирања једне операције над меморијом. где време приступа некој локацији зависи не само од физичке позиције те локације већ и од тога којој се локацији претходно приступило. инструкције и подаци у рачунару представљају се помоћу низова нула и јединица. када се нађе у једном од та два стања не може да пређе у друго стање док на њега не делује неки спољашњи утицај.

-. данас опште прихваћен. У складу са тим дужина од 2 бајта назива се полуреч. У ту сврху развијени су различити системи кодовања. дужине 8 битова и. Стога је за групу од 8 битова уведен посебан назив . Binary Coded Decimal). за човека тај информациони садржај најчешће није довољан. као што су аритметички оператори (+. уведена је позната скраћеница бит. односно група од 8 битова која репрезентује тај симбол у рачунару. *. Међу познатије кодове спадају BCD (енгл. Extended Binary Coded Decimal Interchange Code). што значи да је помоћу њега у рачунару могуће представити 28 (256) различитих комбинација. Сада се поставља питање како помоћу битова можемо да представимо различите податке у рачунару. дужине 6 битова. енгл. /). односно број битова тако да свака комбинација битова представља тачно један податак или знак (енгл. у одговорима на питања типа има (1) – нема (0). Са друге стране у обради података се често јавља потреба да се одређене информације представе са више бајтова. а дужина од 8 бајтова дупла реч. знак једнакости. па је уведен и појам реч (машинска реч. при чему се у сваком систему унапред одреди дужина кода. Са становишта рачунара један бит представља најмањи информациони садржај који се може забележити. слова или неки специјални знаци. word) која код већине савремених рачунара представља дужину од 4 бајта. ASCII је осмобитни код. односно један бит. односно симбола. Како се на енглеском језику бинарна цифра пише binary digit. а како је бајт најмања група битова која има сопствену адресу онда се често назива и најмањом адресибилном јединицом рачунара. отворена и затворена заграда итд. .бајт (енгл. већ би се као најмања количина информација која има неко значење могао сматрати један симбол. Но. На пример. укључено (1) – искључено (0) и слично). Одатле природно произлази да најмања дужина ћелије у рачунару износи један бајт. character). American Standard Information Interchange Code). односно једна реч. byte). без обзира да ли су у питању цифре. EBCDIC (енгл. ASCII (енгл. код већине рачунара за представљање бројевних података и инструкција користе се 4 бајта.једине цифре система 0 и 1. па се може рећи да један хардверски елемент физички представља једну бинарну цифру. што и за човека у одређеним ситуацијама има смисла (на пример.

односно (прецизније речено) процесор. Мада је у принципу свеједно која се адреса користи за смештање резултат операције. То практично значи да ће после извршења инструкције претходна вредност једног од операнада бити трајно уништена. При томе треба дати и две додатне напомене. Скуп инструкција које чине једну целину. Садржај адресног дела. док је код других модела рачунара ситуација обрнута. назива се програм. У случају инструкција за манипулисањем подацима адресни део инструкције садржи једну или више адреса података. Операциони део инструкције одређује акцију коју рачунар. једино што то програмер мора да зна пре него што почне да израђује програм. Претходно ћемо дефинисати структуру инструкција и начин њиховог представљања у рачунару и програмима. по извршењу једне инструкције аутоматски прелази на извршење следеће инструкције програма. Треба још истаћи да се код неких рачунара прва адреса користи као адреса резултата. двоадресне и троадресне инструкције. па према томе разликујемо једноадресне. . односно процесор. па приликом израде програма програмер мора о томе да води рачуна. односно представљају једну логички заокружену обраду података. • Прва се односи на двоадресне инструкције код којих се једна од адреса операнада користи и као адреса резултата. 1. На слици 5.операционог дела и адресног дела.ИЗВРШАВАЊЕ ИНСТРУКЦИЈА И ПРОГРАМА У овом поглављу описаћемо процес извршавања појединачних инструкција и механизам помоћу кога рачунар. приказане су наведене инструкције и дат је опис значења сваке адресе. треба да изврши. међутим зависи од тога да ли је у питању • инструкција за манипулисање подацима или је у питању • управљачка инструкција. СТРУКТУРА ИНСТРУКЦИЈА Да би рачунар да би извршио задату обраду података мора да изврши низ појединачних инструкција. Како свака појединачна инструкција описује једну акцију рачунара. она се у општем случају састоји из два логичка дела .

Детаљнији опис управљачких инструкција ћемо изоставити те ћемо пажњу посветити само инструкцијама за манипулисање подацима. ДЕО A1 A2 A3 адреса резултата адреса другог операнда адреса првог операнда ОП. нула-адресне инструкције. тада је инструкција најчешће троадресна (при чему су две адресе.• Друга напомена се односи на чињеницу да код појединих рачунара постоје и тзв. или. ако се адресни део састоји од више адреса. адреса неке друге инструкције програма). ДЕО A адреса једног операнда Слика 5. ОП. ДЕО A1 A2 адреса другог операнда адреса првог операнда ОП. . Када су упитању управљачке инструкције. које се састоје само од операционог дела. Како ови рачунари имају специфичну организацију ми их овде нећемо разматрати. док је трећа адреса. адресни део инструкције може да садржи једну адресу (и то адресу неке друге инструкције). адресе неких података.

При томе ћемо се послужити хипотетичким једноадресним рачунаром. У циљу једноставности излагања. БИНАРНИ И СИМБОЛИЧКИ ОБЛИК ИНСТРУКЦИЈА Како је већ истакнуто инструкције. управљачке јединице коју чине два посебна регистра • ПИ регистар (показивач инструкција) и • РИ регистар (регистар инструкција). ШТА ИМА: ПИ. АК Структура централног процесора и меморије хипотетичког једноадресног рачунара приказана је на слици 6. 8 бита 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ПРОЦЕСОР ПИ 20 60 80 РИ А/Л јединица Акумулатор 8 бита МЕМОРИЈА ОП.2. при чему нећемо изгубити ништа у погледу општости излагања и закључака до којих ћемо доћи. АДРЕСА 4 бита . А/Л јединице (аритметичко – логичке јединице) и 3. са становишта адресности. А/Л. Централни процесор посматраног рачунара састоји се од: 1. КОД 4 бита Слика 6. једног посебног регистра који има специфичну улогу у изврашавању једноадресних инструкција и назива се акумулатор (АК). могу бити различитог типа. у наставку ћемо се ограничити на једносадресне инструкције. 2. РИ.

док РИ регистар садржи саму инструкцију која се тренутно извршава. већ ћемо једноставно сматрати да је она у стању да на улазу прихвати два операнда. са адресама од 0 до 15. У оквиру овог текста нећемо посебно описивати структуру А/Л јединице. Наш једноадресни рачунар мора да обави следећи низ операција: AK ← S(4) AK ← S(AK) + S(5) 6 ← S(AK) при чему смо са S(•) означили садржај акумулатора. Улога АК регистра огледа се у томе што се. Следећи проблем састоји се у томе што треба да дефинишемо скуп инструкција које централни процесор једноадресног рачунара може да изврши. ОПЕРАЦИОНИ И АДРЕСНИ ДЕО инструкције Меморија хипотетичког рачунара састоји се од укупно 16 ћелија дужине 8 бита. у трећем кораку резултат се из АК преписује на адресу 6 у меморији. изврши над њима задату операцију и на излазу да резултат те операције. почев од декадне адресе 010 (бинарно 00002) до адресе 1510 (11112).ЧЕМУ СЛУЖИ: ПИ. А/Л. Извршењем прве операције у АК се уписује бројчани податак који се налази у меморијској локацији са адресом 4. друга операција се извршава тако што се на улаз А/Л јединице (односно њеног електронског кола за сабирање) истовремено доводи операнд из АК и операнд из меморијске локације 5. у њему налази један операнд. коначно. . Као прво. и резултат сместити у меморијску локацију са адресом 6. Тако нам остају још 4 бита за операциони део инструкције. РИ. то значи да ће инструкције нашег рачунара бити 8 бита дугачке. са 4 бита могу се адресовати све меморијске локације. ПРИМЕР Задатак 1: Начинити програм за сабирање два броја који се налаза у меморији на адресама 4 и 5. како је то приказано на слици 6. односно садржај одређене меморијске локације. а по извршењу инструкције у њему се налази резултат. Како смо раније дефинисали да једна меморијска локација може да садржи једну инструкцију или један податак. можемо да закључимо да су нам за адресни део инструкције потребна најмање 4 бита. Први проблем који при томе треба да решимо везан је за расподелу битова на операциони и адресни део инструкције. пре извршења неке аритметичке инструкције. а резултат операције се уписује у АК. Наиме. АК ПИ регистар у току извршавања програма садржи адресу следеће инструкције коју треба извршити.

Пре свега. бинарни облик програма. и за сада непотпуни.акумулатор M . програмер би морао да зна. док последња инструкција омогућава да експлицитно означимо крај неког програма. али је очигледно веома непрактичан за корисника. . тј. машинском облику би имао следећи изглед: 0001 0100 0011 0101 0010 0110 0111 (AK ← S(4)) (AK ← S(AK) + S(5)) ( 6 ← S(AK)) ( прекид рада) Овакав.Одабрани. Табела 1. Одабрани (непотпуни) скуп инструкција Бројевна ознака инструкције Бинарни операциони код инструкције Симболички операциони код инструкције AK ← 0 0 0000 CLR AK ← S(M) 1 0001 LOAD M ← S(AK) 2 0010 STORE AK ← S(AK)+S(M) 3 0011 ADD AK ← S(AK)-S(M) 4 0100 SUB AK ← S(AK)*S(M) 5 0101 MUL AK ← S(AK)/S(M) 6 0110 DIV 7 0111 HALT Опис инструкције ПРЕКИД РАДА AK . Сада се поставља питање како да прикажемо операционе делове наведених инструкција. Резултантни програм у бинарном. и да затим сваки од тих бројева напишемо као четворобитни бинарни број. једини је који рачунар „разуме”. Прве три инструкције омогућавају нам да манипулишемо садржајем акумулатора. Тако дефинисан операциони део инструкције назива се бинарни операциони код. следеће четири инструкције представљају основне аритметичке операције. и да резултат сместимо у меморијску локацију са адресом 6. Одлучимо се за најједноставнију могућност: да свакој инструкцији доделимо бројевну ознаку. односно придружимо број између 0 и 7.меморијска адреса Задатак 2: Сада би могли да поново решимо претходни задатак и начинимо програм у бинарном облику за сабирање два броја који се налаза у меморији на адресама 4 и 5. с обзиром да смо за операциони део инструкције предвидели 4 бита. скуп инструкција приказан је у Табели 1.

морамо да учинимо један додатни напор и направимо посебан програм који ће програме писане у симболичком језику да преводи на бинарни језик рачунара. STORE – ускладишти у меморију. а само проналажење такве грешке веома тешко. ADD – сабери. LOAD – напуни АК. да те скраћенице нису исте за све рачунаре јер сваки произвођач програмских језика уводи своје специфичне скраћенице. Задатак 3: Сада бисмо могли да решимо наведени задатак тако да начинимо програм у симболичком облику за сабирање два броја који се налаза у меморији на адресама 4 и 5. Симболички операциони кодови инструкција нашег хипотетичког рачунара приказани су у последњој колони Табеле 1. (Треба напоменути. и да резултат сместимо у меморијску локацију са адресом 6: LOAD B ADD C STORE A HALT где су B и C симболичке адресе операнада. за човека разумљивог и прегледног програма. симболичком облику. DIVIDE – подели и HALT – прекини рад. и представљају скраћенице уобичајених термина на енглеском језику које се користе за симболичке операционе кодове реалних рачунара. MULTIPLY – помножи. . Дискусија о таквом програму „преводиоцу” следи касније. Решење је пронађено у писању програма у тзв. док је A симболичка адреса резултата. Наравно. При томе је могућност погрешног уношења програма веома велика – јер се цифре могу лако пермутовати. међутим. где број променљивих и/или број података може бити веома велики – то представља огромно оптерећење за програмера.) У нашем примеру скраћенице су изведене од следећих речи: CLEAR – избриши садржај АК. непогодност оваквог. SUBTRACT – одузми. при оваквом начину писања програма програмер би у сваком тренутку морао да зна за сваки податак на којој адреси у меморији се он налази. уколико желимо да пишемо програме у симболичком облику. а адресе података означавају такође симболички – на сличан начин као што се у математици означавају имена променљивих. где се операциони кодови пишу као низови словних знакова. Са друге стране. је у томе што такав програм рачунар једноставно „не разуме”. којих у рачунару има неколико стотина. То намеће потребу да.или да бар има поред себе записане. У програмирању реалних проблема. операционе кодове свих инструкција.

тако да он сада садржи адресу следеће инструкције програма. корак: Први корак који мора да се изврши јесте да се у ПИ регистар упише адреса прве инструкције (адреса 4) нашег програма. ИЗВРШАВАЊЕ ИНСТРУКЦИЈА Посматрајмо слику 7. корак: Од тог тренутка почиње аутоматско извршавање програма. ТОК ИЗВРШАВАЊА 1. корак: После овог корака процесор је себи обезбедио прелазак на следећу програмску инструкцију. Наиме. на слици су приказане и међусобно повезане компоненте меморије и централног процесора. ЗАПАЗИМО Приметимо и то да смо програм записали у меморији у неком симболичко-декадном облику (операциони кодови су у симболичком. с тим што је у оквиру централног процесора приказан један уређај који до сада није помињан декодер операција. пре анализе инструкције централни процесор извршава један веома важан корак . корак: Затим. 2. 3. ПРЕТПОСТАВКЕ Претпоставимо да су у тренутку када почињемо наше разматрање процеса извршавања инструкција. почетном тренутку садржаји свих регистара процесора празни или садрже неке недефинисане и нама непознате вредности. а адресе у декадном облику) ради лакшег праћења. што не представља никакав проблем јер је инструкција са те адресе већ смештена у РИ. Наравно. почетни подаци у локацијама 8 и 9). Централни процесор извршава свој узми – изврши циклус тако што узима (у ствари само чита) прву инструкцију из меморије и уписује је у регистар РИ (прва три корака на слици 8).3. 4.повећава садржај регистра ПИ за један. НАПОМЕНА Треба напоменути да су том. на тај начин се уништава адреса 4 (адреса прве инструкције програма). у меморији рачунара већ смештени и програм који треба да се изврши и почетни подаци (програм у локацијама од 4 до 7. на којој је представљен наш хипотетички једноадресни рачунар у нешто другачијем облику него до сада. детаљно ћемо проучити процес извршавања инструкција и програма у рачунару. и 8. . Паралелним праћењем слика 7.

односно побуђује одговарајућа електронска кола.АДРЕСНИ РЕГИСТАР МЕМОРИЈЕ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ПРИХВАТНИ РЕГИСТАР МЕМОРИЈЕ ПРМ Адреса података АРМ 7 10 6 9 5 8 4 Адреса инструкције 7654 LOAD 8 A DD 9 STORE 10 HALT ПИ Показивач инструкција 20 60 80 МЕМОРИЈА LOAD 8 20 ADD 9 60 STORE 10 80 HALT Инструкција LOAD 8 ADD 9 STORE 10 HALT РИ Регистар инструкција ДЕКОДЕР ОПЕРАЦИЈА 60 Податак А/Л ЈЕДИНИЦА 20 80 80 20 Податак АКУМУЛАТОР Слика 7. приказано за инструкцију LOAD 8. корак: После анализе инструкције. што је на слици 8. прелази се на њено извршавање. . коју обавља декодер операција тако што анализује бите операционог кода и издаје наредбу. 5.

корак: Адресни део инструкције се уписује у АРМ (при томе се брише претходни садржај тог регистра). ДАЉИ ТОК По завршетку једног узми-изврши циклуса процесор прелази на следећи циклус и из ПИ регистра узима адресу следеће инструкцију коју треба извршити. . корак: Коначно.6. када завршава са радом. док се наравно фаза извршења разликује од инструкције до инструкције. АРМ ПРМ РИ S(ПИ) S(S(АРМ)) S(ПРМ ) Адресу инструкције упиши у АРМ Инструкцију упиши у ПРМ Инструкцију упиши у РИ ПИ S(ПИ )+1 Обезбеди аутоматски прелазак на следећу инструкцију Анализуј инструкцију АРМ ПРМ АК S(РИ -а) S(S(АРМ)) S(ПРМ) Извршава ДЕКОДЕР ОП ЕРАЦИЈА Адресни део инструкције упиши у АРМ Податак упиши и ПРМ Податак упиши у АК (акумулатор) Слика 8. повећавање садржаја регистра ПИ и анализу инструкцију. већ пребацује контролу оперативном систему. идентични. 7. 4. 8. ВАЖАН ЗАКЉУЧАК Из изложеног се може закључити да су делови циклуса узми-изврши везани за узимање инструкције. При томе треба напоменути да у реалности последња инструкција програма не прекида рад рачунара. све док не дође до последње инструкције програма. податак се из ПРМ преписује у акумулатор. корак: Затим се податак са адресе 8 уписује у ПРМ (брише се и његов претходни садржај).

Пре свега треба да констатујемо да за асемблер. кориснички програм. У овом поглављу ћемо у основним цртама описати неопходне елементе потребне за реализацију асемблера и скицирати његов принцип рада. Принцип рада асемблера описаћемо на примеру тзв. Такав програм назива се асемблер (енгл. с тим што је онда такве програме неопходно превести у бинарни облик како би рачунар могао да их изврши. assembler). . описана су два облика једног програма – симболички и бинарни. кориснички програм представља податке које он треба да обради.ПРЕВОЂЕЊЕ. машински облик. означавајући на тај начин да је прва слободна локација у меморија локација са адресом 0. Наравно. На почетку рада асемблера БЛ се поставља на нулу. она се састоји од последње две колоне Табеле 1. • коначно асемблер мора имати на располагању довољно меморије да може. ПОВЕЗИВАЊЕ И ПУЊЕЊЕ ПРОГРАМА У поглављу 2. да формира једну посебну табелу која се назива табела симбола. и на основу табеле инструкција проналази одговарајући бинарни операциони код 0001. Како то није случај симболичку адресу B уписује у посматрану табелу. assembly language). • једна меморијска локација која треба да игра улогу посебног бројача који се назива бројач локација (БЛ). то значи да је неопходно да постоји и посебан програм који врши превођење нашег. Асемблер затим узима прву инструкцију симболичког програма. односно. у току рада. па се често и симболички језик назива асемблерским језиком (енгл. што значи да ће се у меморији рачунара на почетку рада асемблера наћи наш. two-pass assembler). која је у том тренутку још увек празна. слика 9. При томе смо констатовали да је за програмера погодније да програме израђује у симболичком облику. LOAD B. Следећи корак је да се иницијализује табела симбола. у случају нашег хипотетичког рачунара. асемблера са два проласка (енгл. а затим инструкцију преписује у меморију у бинарно-симболичком облику. корисничког програма из симболичког у бинарни облик. а затим узима симболичку адресу B и проверава да ли се та адреса већ налази у табели симбола. Поред тога у меморији је неопходно и да се нађу следећи подаци: • табела инструкција која садржи симболичке и бинарне операционе кодове свих инструкција које процесор може да изврши.

1. а истовремено БЛ указује на следећу слободну локацију у меморији са адресом 4. у другом проласку.СИМБОЛИЧКИ ОБЛИК БИНАРНИ ОБЛИК 0001 0011 0010 0111 0100 0101 0110 0000 1:1 ПРЕВОДИЛАЦ (ASSEMBLER) ДРУГИ ПРОЛАЗАК 0001 0011 0010 0111 НАРЕДБА У В. прва инструкција програма заузеће локацију са адресом 0. чиме се завршава тзв.бројач локација МЕЂУФАЗА Слика 9. 5 и 6 да доделимо симболичким адресама. на адреси 1. Описани поступак се понавља за све инструкције симболичког програма. Како. 1:1 LOAD B ADD C STORE A HALT ПРЕВОДИЛАЦ (COMPILER) A: = B + C ПРВИ ПРОЛАЗАК B C A 0000 76543210 СИМБОЛИЧКЕ АДРЕСЕ ФИЗИЧКЕ АДРЕСЕ B 4 . између првог и другог проласка. Са друге стране. Због тога се садржај БЛ-а повећава за 1. Резултат првог проласка је програм у бинарно-симболичком облику у коме су операциони кодови у бинарном. физичком адресом на основу табеле симбола.0110 БЛ . односно променљивима B. Описани принцип рада асемблера са два проласка може се краће и елегантније описати помоћу следећег псеудо-кода: begin (* asembler *) BL:=0. у табели симбола су пописане све симболичке адресе. . указујући да је следећа слободна локација.П. у коју ће се уписати следећа инструкција програма. асемблер пролази кроз бинарно-симболички облик програма и у свакој инструкцији симболичку адресу замењује одговарајућом меморијском. што се ефективно дешава у међуфази рада асемблера. први пролазак асемблера кроз програм. на адресама 4. 2 и 3 заузеле су четири инструкције програма).0100 C 5 . (Локације са адресама 0. по нашој конвенцији. Коначно. C и A. једна инструкција заузима једну меморисјку локацију. али су адресе података још увек у симболичком облику.0101 A 6 .Ј. Сада можемо следеће три локације у меморији.

B и C. такође је приказана и наредба вишег програмског језика којом се постиже исти ефекат сабирања два броја. за разлику од превођења које врши асемблер и које је типа 1:1 јер. асемблерском језику. Стога је неопходно да се изврши превођење програма са вишег програмског језика на машински језик. по правилу. compiler-а). BL:=BL+1 (* međufaza *) while nije kraj tabele simbola do upiši S(BL) u sledeći nepopunjen red tabele simbola. if simbolička adresa nije u tabeli simbola then upiši simboličku adresu u tabelu simbola. Тај поступак се најчешће одвија тако што се програм са вишег програмског језика. (* prvi prolaz *) while nije kraj simboličkog programa do uzmi instrukciju simboličkog programa. prepiši instrukciju u binarnom obliku end. а затим га преузима асемблер и преводи на машински језик. помоћу посебног програма преводиоца (енгл. преводи на асемблерски језик. као што рачунар не може директно да изврши програм у симболичком. још мање је у стању да директно изврши програм написан у неком вишем програмском језику. за једну симболичку наредбу асемблер генерише једну машинску наредбу. prepiši instrukciju u binarno-simboličkom obliku. • У досадашњем излагању истакли смо да је неопходно да се програм на вишем програмском језику преведе на ниво језика који машина може да изврши. . Да би употпунили слику трансформација које програм на вишем програмском језику треба да претрпи до тренутка када је спреман за извршавање размотримо слику 10. simboličku adresu zameni fizičkom adresom iz tabele simbola. BL:=BL+1 (* drugi prolaz *) while nije kraj binarno-simboličkog programa do uzmi instrukciju binarno-simboličkog programa. и памћења резултата у променљивој A.inicijalizuj tabelu simbola. Но. За превођење које врши компајлер често се каже да је типа 1:n јер за једну наредбу вишег програмског језика компајлер генерише више наредби асемблерског језика. prevedi operacioni kod u binarni oblik na osnovu tabele instrukcija. (* asembler *) На слици 9. Очигледно је да је такав начин писања програма најпогоднији за програмера јер је веома сличан начину како човек пише математичке изразе.

он се може сваки пут унети у неки други део меморије и сваки пут се може успешно извршити. и да се у току извршавања премести (релоцира) неколико пута у меморији. и на свом улазу добија програмске модуле у бинарно-симболичком облику. .ИЗВОРНИ ПРОГРАМ БИНАРНОСИМБОЛИЧКИ КОД ПРЕВОДИЛАЦ (COMPILER) ГЛАВНИ ПРОГРАМ РЕЛОКАТИБИЛНИ БИНАРНИ КОД ПРОГРАМ ЗА ПОВЕЗИВАЊЕ (LINKER) ПРЕВОДИЛАЦ (COMPILER) ИЗВРШНИ ПРОГРАМ ПРОГРАМ ЗА ПУЊЕЊЕ (LOADER) ПОТПРОГРАМ БИБЛИОТЕКА ГОТОВИХ ПРОГРАМА . Основна карактеристика потпрограма је да се они по правилу могу преводити независно од других програмских целина које их користе и које играју улогу позиваоца тј. Шта више. активирају позвани потпрограм. приликом више извршавања програма. а на излазу даје повезану програмску целину у бинарном облику. тј. који се увек завршава наредбом повратка у позиваоца. логичких заокружених програмских целина које се могу користити од стране других програма. повезани облик програма назива се релокатибилни бинарни код. Слика 10. Такве потпрограме може писати сам програмер за потребе решавања конкретног проблема. Програм који обавља тај посао назива се програм за повезивање (енгл. често се дешава да се програм унесе и почне да се извршава у једном делу меморије. Описана ситуација захтева да се главни програм и сви потпрограми повежу у једну целину како би се омогућио прелазак из једне програмске целине (модула) у другу. Једно од моћних „оружја” у програмирању је израда и коришћење потпрограма. По извршењу наредбе позива потпрограма. При томе је неопходно да у позиваоцу постоји експлицитна наредба за позив потпрограма. . Другим речима. због тога што је у таквом облику да се може унети (лоцирати) у било који слободан део меморије. а са друге стране могуће је формирати и/или купити на тржишту библиотеке готових потпрограма. посебних. при чему се његов рад и даље одвија неометано. Такав. прекида се извршавање позиваоца и почиње извршавање позваног потпрограма. . linker).

. loader-а). Овај системски програм се активира сваки пут када програмер захтева извршавање преведеног и повезаног програма. Такав захтев програмер у ствари испоставља оперативном систему који проналази слободан простор у меморији и потом активира програм за пуњење чији је задатак да релокатибилни код са секундарне меморије (најчешће са магнетског диска).Коначно. размотримо и улогу програма за пуњење (енгл. упише у део меморије који је одредио оперативни систем.

хардвером и софтвером. Комбинивањем ових инструкција могуће је извршавати различите операције над подацима. • поређење два броја може се реализовати помоћу инструкција COM и ADD (при чему се формира њихова разлика). уместо да сваки пут пишемо читав низ инструкција за извршавање ових операција уведимо нове симболичке операционе кодове: SUB . са становишта корисника. ADD . . СТРУКТУРНА ОРГАНИЗАЦИЈА РАЧУНАРА Из досадашњег излагања може се закључити да је рачунарски систем сложен уређај чије су карактеристике.формирај комплемент задатог броја и TST . MUL . Но. DIV . дефинисане његовим физичким компонентама. а затим помоћу инструкције TST се та разлика упореди са нулом.сабери два броја. • одузимање може се реализовати помоћу инструкција COM и ADD.препиши садржај једне локације рачунара у другу локацију. Претпоставимо да на располагању имамо рачунар. Нека тај хардвер може да изврши само следеће четири инструкције: MOV .помножи два броја. па програме пишемо тако као да пред собом имамо рачунар Р2 који те инструкције може директно да изврши (слика 11). Скуп ових инструкција чини језик Ј1 који посматрани рачунар може директно (хардверски) да изврши. На тај начин дефинисали смо нови језик Ј2 од осам инструкција.одузми два броја. У овом одељку покушаћемо да концепт рачунара као машине која се састоји од хардвера и софтвера генерализујемо. COM . означимо га са Р1 који се састоји само од хардвера.5. односно програмера.упореди два броја.подели два броја и CMP . На пример. итд.упореди вредност задатог броја са нулом.

У стварности. управо. посредством софтвера. реализовани на овакав начин и састоје се од шест нивоа (слика 12). машинског нивоа који је на слици 12. програмер не мора да води рачуна о томе. Савремени рачунари су. Ј1 Слика 11. хардверски извршити. а затим на језик Ј1 који стварни рачунар Р1 може да директно да изврши. односно виртуелни рачунар Р3. преведу на језик хардвера.Р2. . Програми писани на језику Ј3 морали би се прво превести на језик Ј2. практично. Неке његове инструкције могу се директно. назван конвенционални машински ниво. Ј2 MOV ADD COM TST SUB MUL DIV CMP MOV COM ADD TST Преводилац или тумач писан на језику Ј1 Р1. Програм који врши превођење са језика Ј2 на језик Ј1 мора бити написан на језику Ј1. док се друге морају превести на облик који стварни. при чему је ирелевантно да ли ће се извршити директно хардверски или ће пре тога бити неопходно да се. Развој микропрограмског нивоа и нивоа оперативног система омогућио је да се виши нивои развијају на флексибилнији начин тако да над истим хардвером можемо да дефинишемо. При томе је. Временом су се развиили асемблерски ниво и ниво виших програмских језика. Очигледно се овакав приступ дефинисању виртуелних рачунара може генерализовати. међутим. хардверски рачунар Р1 може да изврши. па би сада могли да дефинишемо нов скуп инструкција које чине језик Ј3. битно да се уочи да приликом писања програма на језику неког виртуелног рачунара. различите виртуелне машине. са становишта корисника. само од тзв. Са његове тачке гледишта програми писани на било ком језику могу да се изврше. рачунар Р2 је виртуелни (привидни) рачунар. Први рачунари састојали су се.

.5 НИВО ПРОГРАМСКИХ VI[IH ЈЕЗИКА Превођење (compiler) 4 НИВО АСЕМБЛЕРА Превођење (assembler) 3 НИВО ОПЕРАТИВНОГ СИСТЕМА Делимично тумачење (интерпретер) 2 КОНВЕНЦИОНАЛНИ МАШИНСКИ НИВО Тумачење (микропрограм) 1 МИКРОПРОГРАМСКИ НИВО Тумачење (хардвер) 0 ХАРДВЕР Слика 12.

Sign up to vote on this title
UsefulNot useful