русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Директива MODEL.


Дата добавления: 2014-11-27; просмотров: 1921; Нарушение авторских прав


 

Директива MODEL используется в режиме IDEAL и позволяет задавать в программе одну из нескольких стандартных моделей сегментации. Синтаксис директивы MODEL:

МODEL [модификатор] модель_памяти [имя_кодового_сегмента]

[, [модификатор_языка] язык] [, модификатор]

В режиме Masm используется тот же синтаксис, но с директивой .MODEL Параметр модель_памяти может принимать одно из следующих значений:TINY(крошечная), SMALL(маленькая), MEDIUM(средняя), LARGE(большая), HUGE(огромная).

Модель Код Данные Предполагаемые значения регистров
TINY near Near CS=DGROUP DS=SS=DGROUP
SMALL near Near CS=_TEXT DS=SS=DGROUP
MEDIUM far Near CS=<имя_модуля>_TEXT DS=SS=DGROUP
COMPACT near Far CS=_TEXT DS=SS=DGROUP
LARGE far Far CS=<имя_модуля>_TEXT DS=SS=DGROUP
HUGE far Far CS=<имя_модуля>_TEXT DS=SS=DGROUP
TCHUGE far Far CS=<имя_модуля>_TEXT DS=SS=NOTHING
TPASCAL near Far CS=CODE DS=DATA SS=NOTHING
FLAT near Near CS=_TEXT DS=SS=FLAT

Каждая модель_памяти предназначена для какого-то типа организации выполняемого файла:

TINY - код и данные объеденены в одну группу DGROUP. Эта модель используется для создания программ типа .COM. Во многих языках высокого уровня эта модель не поддерживается.

SMALL - код программы находится в одном сегменте. Все данные объеденены в группу DGROUP. Такая модель памяти чаще всего используется в программах, написанных на языках высокого уровня.

MEDIUM - код находится в нескольких сегментах, по одному на каждый программный модуль. Данные объеденены в группу DGROUP.

COMPACT - код находится в одном сегменте. Все данные имеют ближний тип и находятся в группе DGROUP. Для ссылки на данные из кода применяются указатели дальнего типа.



LARGE - код может размещаться в нескольких сегментах, на каждый модуль - новый сегмент. Все данные имеют ближний тип и находятся в группе DGROUP. Для ссылки на данные из кода применяются указатели дальнего типа.

HUGE - так же, как и для модели LARGE, но возможности TASM по использованию всего объема памяти для размещения программы исполтзуются в полной мере.

TCHUGE - так же, как и для модели LARGE, но с иным использованием сегментных регистров.

TRANSCAL - модель предназначена для поддержки ранних версий Borland Pascal. Для более поздних версий не используется.

FLAT - так же, как и для модели SMALL, но для создания программ для OS/2.

Необязательный параметр модификатор в объявлении директивы MODEL позволяет изменять некоторые черты указанной модели, причем при необходимости можно задавать несколько модификаторов. Ниже перечислены все доступные модификаторы:

NEARSTACK - указывает, что сегмент стека будет включен в DGROUP (если DGROUP присутствует) и SS будет указывать на DGROUP.

FARSTACK - сегмент стека не должен включаться в DGROUP и SS не будет инициализирован.

USE16 - указывает (если выбран процессор 80386 или 80486), что все сегменты текущей модели должны использоваться как 16-битовые.

USE32 - то же, как 32-битовые.

DOS,OS_DOS - указывает, что данная программа предназначена для использования в DOS.

OS2,OS_OS2 - то же, OS/2.

По умолчанию TASM использует модификаторы NEARSTACK, DOS и USE16 (USE32, если выбран процессор 80386 или 80486).

Параметр имя_кодового_сегмента, который также является необязательным, может использоваться в модели LARGE и ей подобным для переопределении имени, назначенного кодовому сегменту по умолчанию (обычно это имя модуля с добавлением к нему _TEXT).

Параметры язык и модификатор_языка определяют соглашения для вызова процедур, а также стиль пролога и эпилога процедуры, они определяют, как представляются внешние имена для использования их компоновщиком. TASM автоматически генерирует код входа и выхода из процедур в стиле одного из следующих языковых соглашений: PASCAL, C, CPP (C++), SYSCALL, STDCALL, BASIC, FORTRAN, PROLOG и NOLANGUAGE. Если язык не указан, TASM использует NOLANGUAGE.

Параметр модификатор_языка указывает на необходимость добавить в код процедур специальные прологи и эпилоги при разработке программ для WINDOWS или Borland Overlay Loader. Значениями этого параметра могут быть: NORMAL, WINDOWS, ODDNEAR и ODDFAR. По умолчанию установлен NORMAL.

 



<== предыдущая лекция | следующая лекция ==>
Объединение. | Директивы упрощенного описания сегментов.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.079 сек.