You are on page 1of 16

4.

Формати инструкција
Једна од битних карактеристика архитектуре процесора је и формат
инструкција – број операнада које једна аритметичко-логичка инструкција
садржи. По овој особини процесори се деле на троадресне, двоадресне,
једноадресне и нуладресне.
На слици 4.1 приказан је формат једне троадресне инструкције који се
састоји из кода операције и три операнда.

Слика 4.1 Пример формата једне троадресне инструкције


Троадресна инструкција сабирања са слике 4.1 представља следећу
операцију:
C:=A+B или C=A+B или A+B→C
Погледајмо садржаје меморијских локација пре и после извршења
наредбе:
A B C
3 5 x
ADD A, B, C 3 5 8
На слици 4.2 приказан је формат једне двоадресне инструкције
који се састоји из кода операције и два операнда.

Слика 4.2 Пример формата једне двоадресне инструкције


Двоадресна инструкција сабирања са слике 4.2 представља следећу
операцију:
B:=A+B или B=A+B или A+B→B
Погледајмо садржаје меморијских локација пре и после извршења
наредбе:
A B C
3 5 x
ADD A, B 3 8 x

Да бисмо сада резултат сабирања сместили у меморијску локацију C


потребно је извршити још једну наредбу, пребацивања садржаја
меморијске локације B у меморијску локацију C (MOVE B, C).
A B C
3 5 x
ADD A, B 3 8 x
MOVE B, C 3 8 8

Важно је уочити да сада резултат сабирања имамо у локацијама B и C,


док је првобитни садржај локације B изгубљен. Дакле, још увек немамо
исто стање као у случају троадресне операције. Ово стање могуће је
постићи на следећи начин:
A B C
3 5 x
MOVE B, C 3 5 5
ADD A, C 3 5 8
На слици 4.3 приказан је формат једне једноадресне инструкције који
се састоји из кода операције и операнда.
KO OP1
ADD A
Слика 4.3 Пример формата једне једноадресне инструкције
Једноадресна инструкција сабирања са слике 4.3 представља следећу
операцију:
ACC:=ACC+A или ACC=ACC+A или ACC+A→ACC
Специфицирани операнд (A) је приказан као други операнд, док се први
операнд налази у акумулатору (ACC). Код неких једноадресних процесора
специфицирани операнд је први операнд, док је други операнд у
акумулатору. Погледајмо садржаје меморијских локација и акумулатора пре
и после извршења наредбе:
A B C ACC
3 x x 5
ADD A 3 x x 8

Погледајмо сада како се реализује: A+B→C коришћењем


једноадресних наредби.
A B C ACC опис
3 5 x x
LOAD B 3 5 x 5 (M(B))→ACC
ADD A 3 5 x 8 (ACC)+(M(A))→ACC
STORE C 3 5 8 8 (ACC)→M(C)
На слици 4.4 приказан је формат једне нулаадресне инструкције
који се састоји само од кода операције.
KO
ADD
Слика 4.4 Пример формата једне нуладресне инструкције

Нулаaдресна инструкција сабирања са слике 4.4 представља следећу


операцију:
ACC:=ACC+[SP] или ACC=ACC+[SP] или ACC+[SP]→ACC
Jедан операнд је у акумулатору, а други у меморији на врху магацина
– у меморијској локацији на коју указује указатељ магацина (SP).
Угластим заградама је означено да операнд није садржај регистра SP,
већ у меморијској локацији на коју указује SP.
Погледајмо садржај акумулатора, указатеља магацина и
релевантних меморијских локација пре и после извршења
инструкције.
A B C ACC SP адреса садржај
3 5 x 2 FFFB FFF9 x
ADD 3 5 x 9 FFFA FFFA 7
FFFB x

Погледајмо сада како бисмо реализовали нашу операцију A+B→C


коришћењем нуладресне инструкције сабирања. Наредбом PUSH
садржај акумулатора (ACC) уписан је на врх магацина и указатељ
магацина увећан је за један (постинкрементирање). Наредбом ADD
(сабирање) сабрани су садржаји врха магацина и акумулатора, али је
пре сабирања указатељ врха магацина умањен за један
(предекрементирање).
A B C ACC SP FFFA FFFB

3 5 x 2 FFFА x x
LOAD A 3 5 x 3 FFFA x x
PUSH 3 5 x 3 FFFA 3 x
LOAD B 3 5 x 5 FFFB x x
ADD 3 5 x 8 FFFA 3 x
STORE C 3 5 8 8 FFFA x x
У табели 4.1 табеларно је приказано коришћење адреса операнада
код различитих формата аритметичко-логичких инструкција. Са A, B и
C представљене су симболичке адресе операнада, док је малим
заградама означено да се ради о садржају меморијских локација или
регистара специфицираних унутар малих заграда.
Број адреса Симболичка репрезентација Интерпретација
3 ko A, B, C (A) ko (B)  C
2 ko A, B (A) ko (B)  B
1 ko A (ACC) ko (A)  A
0 ko (Rn) ko (ACC)  ACC
0 ko (M(SP)) ko (ACC)  ACC
Табела 4.1 Коришћење адреса инструкција (сем инструкција гранања)
По типу операције коју представљаjу кодови операција, операције
се могу поделити и по типу обраде података :
 аритметичке ( +, -, *, / )
 логичке (I, NI, ILI, NILI, eclusive OR)
 померачке (shift)
 операције за смештање података (load, store, move)
 операције за пребацивање података (output, input)
 операције за контролу тока програма (тест и гранање)

Операције померања могу бити једноадресне или чешће нуладресне


(операнд се налази у акумулатору).
Операције смештања података могу бити једноадресне (load, store)
или двоадресне (move).
Операције пребацивања података, зависно од архитектуре
процесора, могу бити нулаадресне (податак је у акумулатору или
одређеном регистру, а адреса у одређеном регистру), једноадресне
(податак је у акумулатору, а операнд је адреса периферије) или
двоадресне (један операнд је адреса податка, а други адреса
периферије).
Операције за контролу тока програма најчешће су једноадресне,
операнд је адреса програмске меморије са које треба наставити
извршавања програма у случају испуњености услова гранања или
тестирања.
Кодови операција са разликују од архитектуре до архитектуре
и по дужини. Дужина кода операције по правилу везана је са
ширином магистрале података (8, 16 или 32 бита).
Код операције (КО), сем инструкције коју треба извршити (код
операције у ужем смислу), дефинише и метод адресирања.

Код операције Метод Операнд 1 Операнд 2 Операнд 3


у ужем смислу адресирања
Код операције у ширем смислу
Слика 4.5. Део кода операције дефинише и метод адресирања
У досадашњем тексту о формату инструкције под појмом операнд
подразумева се онај део инструкције који дефинише податак над којим
се извршава операција.
Операнди су по својој природи најчешће адресе меморијских
локација или регистара и као такви су коришћени у досадашњем делу
текста. Операнди не морају нужно представљати адресу. По типу
података операнди могу бити:
 адресе
 бројеви:
• цели (Integer)
• реални (фиксни и покретни зарез) – Real
 карактери (Characters )
 логички подаци
У досадашњим примерима користили смо симболичке променљиве A,
B и C и помињали садржаје меморијских локација A, B и C. Физичке,
стварне, адресе ових локација остале су нам непознате. У рачунару се
свакако оперише са стварним (физичким) адресама операнада и
додељивање физичких адреса симболичким адресама одвија се током
превођења програма са асемблера на машински језик уз помоћ табела
као на слици 4.6.
Симболичка адреса Физичка адреса
A FABC
B 987A
C D3B9
Слика 4.6 Табела пресликавања симболичких адреса у физичке адресе
Уз претпоставку да је код операције сабирања о коме је реч (ADD)
F4A8 и да важи таблица пресликавања 4.2 наредба над операндима чије
су симболичке адресе A, B и C у рачунару ће бити записана као на слици
4.7.

ADD A B C
F4A8 FABC 987A D3B9
Слика 4.7 Асемблерски облик троадресне наредбе сабирања и запис у меморији рачунара

Операнди се разликују и по дужини. Када је операнд по својој


природи адреса дужина операнда сагласна је са ширином магистрале
адреса, а када је операнд по природи податак дужина операнда зависи од
типа податка.

You might also like