Пример Б 2 Специальные директивы описания основных сегментов |



Пример Б.2. Специальные директивы описания основных сегментов |

Dosseg ; задает расположение сегментов
.Model small ; описание модели памяти
.Stack 100h ; описание стекового сегмента
.Data ; начало сегмента данных
; В этом сегменте располагается описание
; используемых в программе данных
^ , . Code ; начало сегмента кодов
; В этом сегменте располагается текст основной
; программы и входящих в нее подпрограмм
END ; конец текста программы

В примере Б.2 директивы .stack, .Data, .code указывают начало соответствующего сегмента, директива Ends при этом не нужна. Признаком конца текущего сегмента является начало следующего или директива END, завершающая текст программы, поэтому вложение сегментов исключено. В тексте программы, кроме указанных сегментов, могут использоваться другие, описанные обычным способом.

Перед специальными директивами имена сегментов не указываются, но они могут понадобиться для использования в программе. Макроассемблер присваивает стековому сегменту имя stack, сегменту данных — имя _data (нижняя черта обязательна). Имя сегмента кодов зависит от модели памяти, например, при моделях small и compact оно будет _text. Присвоенные сегментам имена можно посмотреть в карте памяти, которую формирует компоновщик при указании файла с типом тар (см. выше).

Для управления последовательностью расположения сегментов в примере Б.2 использована директива Dosseg, которая размещает сегменты в соответствии с соглашениями DOS. Это значит, что первым в теле задачи будет расположен кодовый, а последним — стековый сегмент. Если сегментов всего три, то данные будут размещены после кодов, перед областью стека. Дополнительные сегменты располагаются между кодами и данными.



- Начало - - Назад - - Вперед -