3.3.3. Порядок загрузки сегментов

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

.alpha

Эта директива устанавливает алфавитный порядок загрузки сегментов.

.dosseg ; для MASM и WASM

или

dosseg ;  для MASM и TASM

Устанавливает порядок загрузки сегментов, существующий в MS DOS и часто

требуемый для взаимодействия программ на ассемблере с программами на язы­ках высокого уровня. DOSSEG устанавливает следующий порядок загрузки сег­ментов:

1. Все сегменты класса 'CODE'.

2. Все сегменты, не принадлежащие группе DGROUP и классу 'CODE'.

3. Группа сегментов DGROUP:

- все сегменты класса

- все сегменты, кроме классов и

- все сегменты класса 'BSS';

- все сегменты класса

Сегмент дальних данных:

НИМ

.seq

Устанавливает загрузку сегментов в том порядке, в котором они описаны в тек­сте программы. Этот режим устанавливается по умолчанию, так что директива .SEQ просто отменяет действие .ALPHA или .DOSSEG.

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