Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
программирование ассемблер(лекция).doc
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
798.72 Кб
Скачать

Сегменттік регистрлер

Микропроцессордың программалық моделінде алты сегменттік регистрлер бар: cs, ss, ds, es, gs, fs. Микропроцессор аппараттық түрде программа құрылымын үш түрлі бөлікте ұйымдастырады, оларды сегменттер деп атаймыз. Сәйкесінше, мұндай жадыны ұйымдастыру сегменттік деп аталады.

Сегменттік регистрлер нақты уақыт ішіндегі программа қатынасатын сегменттерді көрсету үшін қолданылады. Нақтылай айтатын болсақ бұл регистрлерде сәйкесінше сегмент орналасқан жады адрестері орналасады. Машиналық команданың өңделуінің логикасының құрылымы, команданы таңдау кезінде, стекке немесе программа деректеріне қатнау кезінде анықталған сегменттік регистрлердің адрестерін қолданады. Микропроцессор келесі түрдегі сегменттерді қолдайды:

1.Код сегменті.

Программа командаларынан тұрады. Бұл сегментке қатынау үшін cs регистрі қолданылады (code segment regіster) — кодтың сегменттік регистрі. Микропроцессор қатынай алатын, машиналық командалардан құрылған сегмент адресінен тұрады (яғни бұл командалар микропроцессор конвейеріне жүктеледі).

2.Деректер сегменті.

Программамен өңделетін деректерден тұрады. Бұл сегментке қатынау үшін ds регистрі қолданылады (data segment regіster) — деректердің сегменттік регистрі, мұнда ағымдағы программаның деректер сегментінің адресі сақталады.

3.Стек сегменті.

Бұл сегмент стек деп аталатын жады аймағынан тұрады. Стекпен жұмысты микропроцессор келесі принцип бойынша ұйымдастырады: бұл аймаққа жазылған соңғы элемент бірінші болып таңдалады. Бұл сегментке қатынау үшін ss регистрі қолданылады (stack segment regіster) — стектің сегменттік регистрі, стег сегментінің адресінен тұрады.

4.Қосымша деректер сегменті:

Машиналық командалардың көпшілігінің алгоритімінің орындалуын елестететін болсақ, ds сегменттік регистрде орналасқан адрес бойынша, олармен өңделетін деректер сегменттер регистрінде орналасқан болып көрінеді. Егер программаға бір сегменттік регистр аз болатын болса онда, ол тағы үш түрлі қосымша деректер сегментін қолдана алады. Бірақ негізгі адресі ds сегменттік регистрінде сақталатын, деректер сегментінен өзгешелігі, қосымша деректер сегментін қолданған кезде олардың адресін арнайы сегменттерді анықтау префикстері арқылы командада көрсетіп кету керек. Қосымша деректер сегментінің адресі es, gs, fs регистрлерінде көрсетіледі (extensіon data segment regіsters).

Басқару және күйлер регистрлері

Микропроцессорға тағы бірнеше регистрлер енгізілген (сурет 4. қара), олар әрқашанда микропроцессор күйі жайындағы, программадағы конвейерден келіп түскен команда жайындағы барлық ақпараттарды сақтайды. Бұл келесі регистрлерден тұрады:

- белгілер регистрі eflags/flags;

- команда көрсеткіші регистрі eip/ip.

Бұл регистрлерді қолдана отырып, микропроцессор күйіне өзгеріс енгізуге және орындалған командалардың нәтижелері жайында ақпарат алуға болады. Бұл регистрлердің құрамын және берілуін толығырақ қарастырайық:

eflags/flags (flag regіster) — белгілер регистрі. Разрядтылығы eflags/flags — 32/16 бит. Берілген регистрдің әрбір битінің анықталған функционалдық тағайындамалары бар, оларды белгілер деп атаймыз. Бұл регистрдің кіші бөлігі і8086 үшін арналған flags регистрінің жұмысына ұқсас. Сурет 5 eflags регистрінің құрылымы көрсетілген.

Қолдану ерекшеліктеріне байланысты, eflags/flags регистр белгілерін үш топқа бөлуге болады:

- 8 белгілер күйі. Бұл белгілер машина командасының орындалуына байланысты өзгеріп отырады. Белгілер күйінің регистрі eflags негізінен арифметикалық және логикалық операциялар орындалған кездегі нәтиже ерекшеліктерін бейнелейді. Бұл есептеу процесінің күйіне анализ жасауға және оған шартты өту командалары немесе подпрограммаларды шақыру арқылы өзгеріс енгізуге мүмкіндік береді.

- 1 басқару белгісі. Df деп белгіленеді (Dіrectory Flag). Ол eflags регистрінің 10-шы битінде болады да, негізінен тізбектелген командалармен қолданылады. df белгісінің мәні бұл операциялардағы өңделетін элементтердің бағытын анықтайды: жолдың басынан соңына қарай (df = 0) немесе керісінше, жолдың соңынан басына қарай (df = 1). df белгісімен жұмыс істеу үшін арнайы командалар бар: cld (df белгісін нөлдеу) және std (df белгісін тағайындау). Бұл командаларды қолдану df белгісін алгоритімімен сәйкестендіруге және жолдармен жұмыс жасау кезіндегі санауыштың мәнін үлкейтіп және кішірейтіп отыруға мүмкіндік береді;

- 5 жүйелік белгілер, енгізу/шығаруды, үзулерді маскалауды, аудармалауды, 8086 виртуальды режимімен тапсырмалар арасындағы ауысуларды басқарады. Қоданбалы программаларға бұл белгілерді мофикациялауға болмайды, өйткені ол көп жағдайда программа жұмысын үзуге әкеліп соғады.

Енгізілген есеп белгісі

Енгізу шығару деңгейінің привелегиясы

Аса толу белгісі

Таңба белгісі

Нөлдік белгі

Қосымша тасымал белгісі

Жұптық белгі

Тасымал белгісі

Eflags(0…31) Eflags(0…15)

31

18

17

16

15

14

13 12

11

10

9

8

7

6

5

4

3

2

1

0

0

AC

VM

RF

0

NT

IOPL

OF

DF

IF

TF

SF

ZF

0

AF

0

PF

1

CF

Басқару белгілері:

Бағыт белгісі Жүйелік белгілер:

Жүйелік үзу белгісі

Үзу белгісі

Қайта қалыпқа келтіру белгісі

Виртуальды 8086 белгісі

Теңестіруді бақылау белгісі

5 cурет. Eflags регистрінің құрылымы