Жадысы бар микропроцессордың жұмысы. Адрестеу әдістері
МП адрестi кеңiстiгі ақпаратты алатын немесе жіберетін ЖЕСҚ-ның жад ұяларының жиынынан тұрады. Жоғарыда айтылғандай, 4-ші буыннан бастап жадыны байттық ұйымдастыру үстем алып, минималдық адрестік бірлік болып байт саналады. Мысалы, 1024 Кб көлемді ЖЕСҚ үшін байттар адресі келесідей:
00000 00001 ... FFFFF
(оларды он алтылық жүйеде жазамыз; соңғы байтың адресі: 1024*1024 -1=1 048 576 - 1 = FFFFF).
Процессор жадымен ақпарат алмасуда олардың нөмiрлерi бойынша ЖЕСҚ-ң ұяшықтарына қатынасады. Егер адрес командада болса, онда ол тікелей адрестеу болғаны. Мұндай жағдайда команда ұзындығы өсетін болғандықтан, процессор ЖЕСҚ-на қатынасу үшін жанама адрестеу әдісі қолданылады. Жад адресі МП регистрларының біріне алдын-ала енгізіліп, командада осы регистрға сілтеме болады. Регистрге адресті сақтауда оны әрі қарай түрлендіруге де ыңғайлы болады.
Бастапқы ақпаратқа кең тараған сілтеме нұсқаларының сипаттамасы:
1) Мәліметтер МП регистрлерінің бірінде орналасады;
2) Мәліметтер команда құрамына енеді немесе әрекет кодының соңында орналасады;
3) МП регистрлерінің адресі бар ЖЕСҚ-ң ұяшығында мәліметтер болады;
4) Мәліметтер ЖЕСҚ ұяшығында орналасады, оның адресі келесідей формуламен есептеледі:
адрес═базалық адрес+ығысу
Базалық адрес МП регистрінің бірінде сақталады және мәліметтер массивінің бастапқы нүктесі болып табылады. Басқа регистрлердің мазмұны болатын белгілі бір тұрақты ығысу болуы мүмкін.
ЖЕСҚ-қа мұндай қатынасу әдісі индекстік деп аталады, себебі индексі болмайынша бір өлшемді массив элементтерін табуға ұқсас болып келеді.
МП-ң нақты модельдерінде ЖЕСҚ адрестеудің кейбір ерекшеліктері болады. Мысалы, РDР процессорларында екілік жанама адрестеу болуы мүмкін. Мәліметтер адресі ЖЕСҚ-ң ұяшығында сақталады, ал оның адресі көрсетілген регистрда болады.
«Intel» фирмасының процессорында қабылданған сегменттік әдісті қарастырайық. Белгілі американдық бағдарламалаушы Питер Нортон бұл әдісті «клудж» сөзі деп атады. («Клудж» ағылшын тілінен аударғанда мәселені уақытша шешуге арналған құрал-сайман). Адрестеудің сегменттік әдісі алғашқы 16-разрядты 8086 МП ұсынылды. 16-разрядты регистрді қолдана отырып, 20-разрядты адрес алу үшін және сол арқылы ЖЕСҚ көлемін 64 кбайттан 1Мбайтқа дейін ең үлкен мүмкіндігін жоғарылату көзделді. ЖЕСҚ адресі екі санның қосындысы сияқты есептеледі. Соның біреуі солға 4 екілік разрядқа ығысқан немесе 16-ға көбейтілген. Мысалы, 16-қ түрдегі сегмент А000 тең болса, ығысу 1000 болады. Мұндай адрестеудің жалпылама жазбасы мынадай түрде болады: А000/1000. Нәтижесіндегі адрес:
А000()
+ 1000
А1000
Сегменттік адрестеуде ЖЕСҚ-ң адресі сандардың бірнеше комбинациясы түрінде беріледі.
Стек термині «stack» атты ағылшын сөзінен шыққан. Стек – бұл стек көрсеткіші қолданылатын тізбектегі әдістен ақпарат саналатын немесе жазылатын адрестеудің анықсыз әдісі. Мысалы, N1, N2 және N3 3 нақты сандар мәнін уақытша сақтау, содан соң барлығын жаңарту қажет болсын. Ол үшін стектік жадыны қолданамыз. Стекте ақпараттың бір кірісі бір шығысы болады. Оның адресін сақтау үшін стек көрсеткіші қажет. Оның адресі 2006 болсын (4.13 сурет, а) «Стекке N1 жазу» командасы болғанда процессор келесі әрекеттерді орындайды:
1) 2-ге стек көрсеткішін азайту (бүтін сан жадыда 2 байт орын алады)
2) Алынған 2004 адресі бойынша N1 жазады (6-2 сурет, б)
«Стекке N2 жазу», «Стекке N3 жазу» командасының орындалуы сәйкесінше болады. Яғни бұл айнымалылардың мәндері 2002 және 2000 ұяшығына орналасады және стек көрсеткіші 2000-ға тең болады.
6.2-сурет. Стек жұмысын зерттеуге арналған мысал
Енді мәліметтерді шығаруды қарастырамыз. (6-2, б сурет) суретінде көрсетілгендей көрсеткіш қазір N3 айнымалысының мәніне «бағытталған», яғни, сол айналымнан бастап оқиды. «N3 Стектен оқу» командасын орындағанда процессор:
1) Стектен N3 мәнін санайды;
2) Көрсеткішті 2-ге үлкейтеді (6-2, г сурет)
Сол сияқты N2 және N1 оқимыз, 6-2 суретінде бейнеленгендей стек босап, бастапқы күйге қайтып келеді.
Дата добавления: 2014-12-22; просмотров: 3430;