Начини адресирања

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

формат инструкције

формат инструкције

Као „адреса“ у инструкцији може се наћи сам податак, адреса регистра или адреса меморијске локације. Да би се знало шта поље „адреса“ представља уведено је симболичко означавање. (наравно, мисли се на запис у асемблерском језику, а у меморији се инструкције записују као низови битова, како је и приказано на слици).
Симболичко означавање
Инструкције су низови битова које као целина представљају логичке реченице које се читају у процесору и на основу очитаног контекста процесор врши одређене радње. Инструкције се, као низови битова, чувају у меморијским локацијама. Ови низови битова се састоје од два основна дела:
– кода инструкције (OC) који говори шта процесор треба да уради током извршавања дате инстукције и
– адресног дела који показују на податак, ако се током извршавања захтева обрада неких података.
Током анализе и програмирања инструкција погодно је датим деловима инструкције (OC и адресе операнда), придружити симболичко значење, што управо и представља асемблерски језик. Симболичке ознаке кодова инструкција називају се мнемоници. Кад је податак у регистру онда пишемо ознаку регистра, ако је податак у меморији онда пишемо редни број адресе или њену симболичку вредност.
Различити микропроцесори подржавају различите начине адресирања. Навешћемо и објаснити неколико најчешће коришћених:

Непосредно адресирање

У том начину адресирања подаци с којима се ради представљају део наредбе. Нпр., наредба MOV A, #195 непосредно преноси означени цео број 195 у регистар A. У том случају, операнд 195 представља стварни податак, јасно назначен у наредби, којим се пуни регистар A. Пошто су код симболичког адресирања бројне вредности резервисане за означавање редног броја адресе мемориjске локације у којој се налази податак, користимо симбол ‘#’ испред бројне вредности како би означили да је то вредност операнда, а не адреса у меморији у којој се налази операнд.

Директно адресирање (Меморијско директно адресирање)

Таквим начином адресирања назначава се адреса локације стварног операнда. Нпр., наредба LOAD A, 195h пребацује податак са меморијске локације на адреси 195 у регистар A. Операнд 195 је адреса на којој се налази податак.

директно адресирање

директно адресирање

Поступак прибављања операнда разликује се за читање из меморије, односно за упис у меморију, и одвија се отприлике по следећем низу корака:
читање из меморије
1. пренети садржај адресног дела инструкције у MAR регистар,
2. затим управљачким сигналом R дати захтев за читање на магистрали, ако је операнд изворишни (SRC1), па кад се циклус читања на магистрали заврши,
3. уписати у прихватни регисар X аритметичко-логичке јединице садржај из MDR регистра.
упис у меморију
2′. Ако је операнд одредишни (DST), онда прво треба уписати садржај који се шаље у меморију у MDR регистар из помоћног регистра Z,
3′. затим тражимо захтев за упис на магистрали одређеним управљачким сигналом W. После циклуса уписа податак који се налази у MDR је ускладиштен на адреси која се налази у адресном делу инструкције
Код овог начина адресирања у симболичком означавању, операнади се представљају редним бројем адресе мемориjске локације у којој се налазе (нпр. 1002h). Све бројне вредности у симболичком означавању инструкција представљаћемо у хексадецималном запису, па у индексу броја стоји ознака h.

Регистарско адресирање. (Регистарско директно адресирање)

Стварни подаци који се обрађују су смештени у регистрима микропроцесора, а операнд означава које регистре треба користити при обради. Нпр., наредба MOV A, B преноси садржај регистра B у регистар A.

регистарско адресирање

регистарско адресирање

Регистарско директно адресирање је адресирање код кога се операнд налази у једном од регистара података (DR) У делу спецификација адресе налази се редни број датог регистра, где у нашем случају стоји бинарни број 3. Дакле, према вредности из спецификације адресе, податак се налази у трећем DR3 регистру.
Када је операнд изворишни (SCR1), податак из датог DR иде у помоћни прихватни регистар X аритметичко-логичке јединице ALU. Ако је податак одредишни (DST) онда се у дати DR регистар уписује резултат из помоћног излазног регистра Z.

Регистарско индиректно адресирање

У регистру наведеном у пољу операнда наредбе налази се адреса меморијске локације стварног податка који се обрађује. Нпр., наредба MOV M, 195 преноси број 195 у меморијску локацију M. Ако је адреса меморијске локације M записана у адресном регистру AR0, наредба ће број 195 уписати у меморијску локацију чија је адреса задана садржајем регистра AR0. Код индиректног адресирања симболичку адресу стављамо између малих заграда. На тај начин препознајемо да регистар AR садржи адресу локације у којој се чува операнд, тако да је облик наредбе са индиректним адресирањем MOV (AR0), 195

регистарско индиректно адресирање

регистарско индиректно адресирање

Регистарско индиректно адресирање је адресирање код кога се операнд налази у једној од меморијских локација, а адреса меморијске локације се налази у једном од адресних регистара (AR). У спецификационом делу се чува редни број адресног регистра чији садржај представља адресу у меморији у којој се налази операнд. Дакле, да би се операнд усладиштио у прихватни регистар ALU јединице, потребно је:
читање из меморије
1. пренети садржај датог AR регистра у MAR регистар,
2. затим управљачким сигналом R дати захтев за читање на магистрали, ако је операнд изворишни (SRC1), па кад се циклус читања на магистрали заврши,
3. уписати у прихватни регистар X ALU-а садржај из MDR регистра.
упис у меморију
2′. Ако је операнд одредишни (DST), онда прво треба уписати садржај који се шаље у меморију у MDR регистар из помоћног регистра Z,
3′. затим тражити захтев за упис на магистрали одређеним управљачким сигналом W. После циклуса уписа податак који се налази у MDR је ускладиштен на адреси која се налази у датом AR регистру.

Меморијско индиректно адресирање

меморијско индиректно адресирање

меморијско индиректно адресирање

Код овог начина адресирања у спецификацији стоји адреса меморијске локације у којој се чува адреса операнда. Да би приступили податку потребно је:
читање из меморије
1. садржај спецификације пребацити у MAR регистар.
2. Затим, извршити циклус читања са магистрале како би адресу операнда из меморије пребацили у MDR регистар.
3. Адресу операнда, сада, стављамо у MAR регистар како би могли да јој приступимо.
4. После тога на основу садржаја из MAR регистра, операнд се прихвата из дате меморијске локације и ставља у MDR регистар ако је операнд изворишни (SRC1),
5. па се затим, садржај MDR регистра прослеђује помоћном X регистру.
упис у меморију
4′. Ако је операнд одредишни (DST), онда се прво из помоћног Z регистра ALU-а, податак преноси у MDR регистар.
5′. Па онда, врши се циклус уписа податка из MDR регистра у меморијску локацију на коју показује садржај MAR регистра.
Симболичка ознака меморијског индиректног адресирања – да би разграничили од меморијског директног адресирања, адресу стављамо унутар малих заграда:
STORE (a1),
LOAD (boja), ADD (0020h), (b3).
Као адресе не морају бити само редни бројеви локација, могу се користити и симболичка имена локација ( a1, boja, b3). У оба случаја, код индиректног адресирања адреса иде у малу заграду!

Релативно адресирање са померајем

Релативно адресирање са померајем је адресирање код кога се операнд налази у једној од меморијских локација, а адреса меморијске локације се добија сабирањем садржаја програмског бројача PC и садржаја спецификације.
Симболичко означавање:
LOAD PC(05h)
ADD PC(00h), PC(ffh),
Где хексадецимални број у загради представља померај.

Advertisements

Оставите одговор

Попуните детаље испод или притисните на иконицу да бисте се пријавили:

WordPress.com лого

Коментаришет користећи свој WordPress.com налог. Одјавите се / Промени )

Слика на Твитеру

Коментаришет користећи свој Twitter налог. Одјавите се / Промени )

Фејсбукова фотографија

Коментаришет користећи свој Facebook налог. Одјавите се / Промени )

Google+ photo

Коментаришет користећи свој Google+ налог. Одјавите се / Промени )

Повезивање са %s