Assembler, Детальна інформація

Assembler
Тип документу: Реферат
Сторінок: 15
Предмет: Комп`ютерні науки
Автор:
Розмір: 66.8
Скачувань: 2501
.DATA DATASEG Начало или продолжение сегмента инициализированных данных. Также используется для определения данных типа near

.CONST CONST Начало или продолжение сегмента постоянных данных (констант) модуля

.DATA? UDATASEG Начало или продолжение сегмента неинициализированных данных. Также используется для определения данных типа near

.STACK [размер] STACK [размер] Начало или продолжение сегмента стека модуля. Параметр [размер] задает размер стека

.FARDATA [имя] FARDATA [имя] Начало или продолжение сегмента инициализированных данных типа far

.FARDATA? [имя] UFARDATA [имя] Начало или продолжение сегмента неинициализированных данных типа far

Наличие в некоторых директивах параметра [имя] говорит о том, что возможно определение нескольких сегментов этого типа. С другой стороны, наличие нескольких видов сегментов данных обусловлено требованием обеспечить совместимость с некоторыми компиляторами языков высокого уровня, которые создают разные сегменты данных для инициализированных и неинициализированных данных, а также констант.

При использовании директивы MODEL транслятор делает доступными несколько идентификаторов, к которым можно обращаться во время работы программы, с тем, чтобы получить информацию о тех или иных характеристиках данной модели памяти (см. HYPERLINK "http://swizard.chat.ru/asmtutorial/" \l "Табл_5" табл. 5 ). Перечислим эти идентификаторы и их значения (табл. 4). Таблица 4. Идентификаторы, создаваемые директивой MODEL

Имя идентификатора Значение переменной

@code Физический адрес сегмента кода

@data Физический адрес сегмента данных типа near

@fardata Физический адрес сегмента данных типа far

@fardata? Физический адрес сегмента неинициализированных данных типа far

@curseg Физический адрес сегмента неинициализированных данных типа far

@stack Физический адрес сегмента стека

Если вы посмотрите на текст HYPERLINK "http://swizard.chat.ru/asmtutorial/" \l "Листинг_1" листинга 1 , то увидите пример использования одного из этих идентификаторов. Это @data; с его помощью мы получили значение физического адреса сегмента данных нашей программы.

Теперь можно закончить обсуждение директивы MODEL. Операнды директивы MODEL используют для задания модели памяти, которая определяет набор сегментов программы, размеры сегментов данных и кода, способ связывания сегментов и сегментных регистров. В табл. 5 приведены некоторые значения параметра модель памяти директивы MODEL.  Таблица 5. Модели памяти

Модель Тип кода Тип данных Назначение модели

TINY near near Код и данные объединены в одну группу с именем DGROUP. 

Используется для создания программ формата .com.

SMALL near near Код занимает один сегмент, данные объединены в одну группу с именем DGROUP. 

Эту модель обычно используют для большинства программ на ассемблере

MEDIUM far near Код занимает несколько сегментов, по одному на каждый объединяемый программный модуль. 

Все ссылки на передачу управления - типа far. 

Данные объединены в одной группе; все ссылки на них - типа near

COMPACT near far Код в одном сегменте; 

ссылка на данные - типа far

LARGE far far Код в нескольких сегментах, по одному на каждый объединяемый программный модуль

Параметр модификатор директивы MODEL позволяет уточнить некоторые особенности использования выбранной модели памяти (табл. 6). Таблица 6. Модификаторы модели памяти

Значение модификатора Назначение

The online video editor trusted by teams to make professional video in minutes