Сегментті анықтайтын директивалар

Программа бөлек сегмент түрінде жасалады және оның ішінде мәліметтер, стек, шартбелгілер және қосымша сегменттері кіреді. Сегментті сипаттаған кезде басы SEGMENT нұсқауымен, ал соңы ENDS нұсқауымен белгіленеді. Сегмент келесі форматта си­патталады:

Аты SEGMENT [теңестіру_түрі] [біріктіру_түрі] [класс]

. . .

Аты ENDS

Теңестіру_түрі сегмент басының шекарасын табады және келесі тағайындаудың бірін алуы мүмкін:

BYTE - сегмент кез келген адрестен басталады.

WORD - сегмент бөлінетін адрестен басталады, екіге бөлінетін (ххх0b)

DWORD - сегмент бөлінетін адрестен басталады, төртке бөлінетін (хх00b)

PAPA - сегмент параграф адресінің шекарасынан басталады, 16 бөлінетін (ххх0h), үнсіздікпен қолданылады.

PAGE - сегмент 256-байттық бет адресінің шекарасынан басталады, 256 бөлінетін (хх00h)

MEMPAGE - сегмент адрестен басталады, 4 Кбайтқа бөлінетін (х000h)

Біріктіру түрі берілген сегмент қарастыру кезінде басқа сегменттермен біріктіруін анықтайды. Келесі біріктіру түрлері қолданылады:

PRІVАТЕ – сегмент берілген модулден тыс басқа атпен берілген басқа сегмент топтарымен бірікпейді, үнсіздікпен қолданылады.

PUBLІC – бір атпен берілген сегменттерді біріктіреді, біріктірген сегменттің ұзындығы біріктірілген сегменттердің қосылған ұзындығына тең.

COMMON – бір атпен берілген сегменттерді бір адреске біріктіреді. Бұл атпен берілген сегменттер бірін –бірі жабады және жадыны бірге қолданады, біріктірген сегменттің ұзындығы қосылған сег­менттердің ең үлкен ұзындығына тең

STACK – стек сегментін анықтау. Жөндегішті бір атпен берілген сегменттерді қосуға мәжбүр етеді және бұл сегменттердің адресін SS регистріне сәйкес анықтайды. Сегменттің ұзындығы біріктірілетін сегменттердің қосындысына тең.

MEMORY - кодтар сегментінен кейін орналасқан деректер сегментін шақырады. Сегменттің өлшемі COMMON біріктіруіне ұқсас анықталады.

АТ_ПАРАГРАФ - берілген операнд бекітілген адрестер бойынша таңбалар мен айнымалыларды анықтауды қамтама­сыз етеді.

Мысалы, экрандық видеобуфер адресін анықтау үшін:

VІDEO-RAM SEGMENT AT OB800h қолданылады.

Класс. апострофқа алынған, берілген операнд компоновка кезінде топтау үшін қолданылады. «Класс» операнды ретінде 'STACK','CODE','DATA' аталымдарын пайдалануға болады

Сегмент өлшемінің типі. i80386 және одан жоғарғы микропроцессорлар сегменттері 16 немесе 32-разрядтық болады. Бұл негізінен біріншіден сегмент өлшеміне және оның ішіндегі физикалық адрестің қалыптастырылу тәртібіне әсер етеді. Сегмент өлшемдерінің келесі типтері қолданылады:

USE16 — бұл сегмент 16-разрядтық адресацияны қолданатындығын білдіреді. Физикалық адресті қалыптастыру кезінде 16-разрядтық ығысу қолданылады. Сәйкесінше, мұндай сегмент 64 Кбайт кодтар сегментінен немесе деректер сегментінен тұрады;

USE32 — бұл сегмент 32-разрядтық адресацияны қолданатындығын білдіреді. Физикалық адресті қалыптастыру кезінде 32-разрядтық ығысу қолданылады. Сәйкесінше, мұндай сегмент 4 Гбайт кодтар сегментінен немесе деректер сегментінен тұрады;

Сегментті анықтаудың қысқышы директивалары

.CODE [аты]Код сегментінің басы немесе жалғасуы

.DATAИнициализацияланған деректер сегментінің басы немесе жалғасы. Сондай-ақ

near типіндегі деректерді анықтау үшін қолданылады.

.CONSTМодульдің тұрақты деректерінің (тұрақтыларының) сегментінің басы немесе

жалғасы

.DATA?Инициализацияланбаған деректер сегментінің басы немесе жалғасы. Сондай-

ақ near типіндегі деректерді анықтау үшін қолданылады.

.STACK[өлшемі]Модул стек сегментінің басы немесе жалғасы. Параметр [өлшем] стек

өлшемін береді

.FARDATA[аты]Инициализацияланған far типтегі деректер сегментінің басы немесе жалғасы








Дата добавления: 2015-10-26; просмотров: 1107;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.