Сегменты программы должны описываться с помощью директивы SEGMENT, указывающей имя сегмента, используемое для ссылок в программе, границу выравнивания (байт, слово, параграф, страница), тип комбинации его с другими сегментами, класс сегмента, определяющий порядок следования сегмента в памяти.
TASM позволяет облегчить описание сегментов путем применения директив упрощенного описания сегментов. Эти директивы употребляют в программе после выбора модели памяти директивой MODEL. В тексте программного модуля директивы упрощенного описания могут располагаться в произвольном порядке.
Ниже приведены список и краткое описание всех директив упрощенной сегментации:
CODESEG [имя] - начало или продолжение кодового сегмента модуля. Для модели с типом FAR можно задавать имя, которое становится действующим именем сегмента. В этом случае нельзя иметь более одного кодового сегмента в модуле.
.CODE [имя] - аналог CODESEG для режима Masm.
DATASEG - начало или продолжение сегмента данных, инициализированных по умолчанию, или типа NEAR.
.DATA - аналог DATASEG для режима Masm.
CONST - начало или продолжение сегмента постоянных данных модуля. Постоянные данные всегда имеют тип NEAR и эквивалентны инициализированным данным.
.CONST - аналог CONST для режима Masm.
UDATASEG - начало или продолжение сегмента данных, не инициализированные по умолчанию или типа NEAR. В этом сегменте необходимо размещать только неинициализированные данные, иначе размер выполняемой программы будет больше необходимого.
.DATA? - аналог UDATASEG для режима Masm.
STACK [размер] - начало или продолжение сегмента стека программного модуля. Необязательный параметр размер указывает объем памяти, отводимый под стек (в словах). По умолчанию TASM устанавливает размер стека в 200h слов (1K). В режиме Masm все метки, программный код или данные, следующие за оператором STACK, не относятся к стековому сегменту. Режим
Ideal наоборот, резервирует указанное пространство и оставляет сегмент стека открытым, что дает возможность размещать в нем метки и неинициализированные данные. Директива создания стека необходима только в случае полной разработки программы на Ассемблере, так как все языки высокого уровня создают стек автоматически.
.STACK [размер] - аналог STACK для режима Masm.
FARDATA [имя] - начало или продолжение сегмента инициализированных данных дальнего типа с указанным именем (по умолчанию используется имя FAR_DATA). В программном модуле можно размещать несколько сегментов такого типа.
.FARDATA [имя] - аналог FARDATA для режима Masm.
UFARDATA [имя] - начало или продолжение сегмента неинициализированных данных типа FAR с указанным именем (по умолчанию используется имя FAR_BSS). В программном модуле можно размещать несколько сегментов такого типа.
.FARDATA? [имя] - аналог UFARDATA для режима Masm.
Использование директив упрощенного описания сегментов создает переменные, которые описывают детали выбранного сегмента. К значениям этих переменных можно обращаться для получения информации о том или ином сегменте. Ниже приведено описание этих идентификаторов: