Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Директивы сегментации

Сегментация кроме разбиения программы на сегменты способствует реализации модульного программирования. Оно предполагает унификацию оформления объектных модулей, создаваемых компилятором, в том числе с разных языков программирования.

 

Сегмент объявляется директивой:

Имя segment [выравнивание] [комбинирование] [класс] [размер]

 

 

Тип выравнивания определяет размещение начала сегмента на заданной границе при компоновке модулей:

 

BYTE – сегмент может начинаться с любого адреса в памяти;

 

WORD - сегмент должен начинаться с адреса кратного двум;

 

DWORD - сегмент должен начинаться с адреса кратного четырем;

 

PARA – сегмент должен начинаться на границе параграфа (адрес кратный 16)

 

PAGE – сегмент начинается на границе страницы (256 байт)

 

MEMPAGE – начало сегмента на границе 4 Кбайт

 

 

Тип комбинирования определяет комбинирование модулей, имеющих одно и то же имя и класс.

 

PRIVATE – не будет объединения с сегментами вне данного модуля (то есть данный сегмент будет самостоятельным).

 

PUBLIC – сегменты с одинаковыми именами объединяются в непрерывный сегмент, а все адреса вычисляются от начала объединенного сегмента.

 

COMMON – произойдет наложение сегментов с одинаковым начальным адресом.

 

AT xxxx – располагается сегмент по абсолютному адресу параграфа (хххх – разрядность адреса). Для доступа к сегменту необходимо загрузить в соответствующий сегментный регистр адрес начала сегмента.

 

STACK – аналогично директиве PUBLIC, но относится к стеку, который объединяется с другим стеком, имеющим такое же имя и класс.

 

 

Класс сегмента – это заключенная в кавычки строка, позволяющая компоновщику определить порядок следования сегмента при собирании программы из сегментов нескольких модулей.

Группируются сегменты одного класса. Имя сегмента может быть любым, но по соглашению желательно, чтобы оно отображало содержимое сегмента.

Например:

‘CODE’, ‘DATA’, ‘STACK’

 

Тип размера сегмента объявляется одной из директив:

 

USE16 – 16-разрядная адресация,

 

USE32 – 32-разрядная адресация.

 

 

Пример программы, не использующей модель памяти:

 

stk segment ‘stack’; объявление сегмента стека

db 256h dup (“?”)

<== предыдущая лекция | следующая лекция ==>
Mov es, ax | Модели памяти
Поделиться с друзьями:


Дата добавления: 2013-12-12; Просмотров: 362; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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