Директивы определения сегментов
После выбора модели памяти вы можете использовать упрощенные сегментные директивы для того, чтобы начинать отдельные сегменты. Некоторые из них приведены в табл. 3.
Таблица 3
Директива | Описание |
codeseg [èìÿ] | Начинает или продолжает сегмент кода модуля. Для моделей с дальним типом кода вы можете задать имя, являющееся фактическим именем сегмента. Заметим, что таким образом вы можете генерировать для модуля более одного сегмента кода. |
dataseg | Начинает или продолжает ближний или инициализируемый по умолчанию сегмент данных. |
Окончание табл. 3
Директива | Описание |
Const | Начинает или продолжает ближний сегмент констант модуля. Постоянные данные всегда являются ближними (NEAR) и эквивалентны инициализированным данным. |
stack [ðàçìåð] | Начинает или продолжает сегмент стека модуля. Необязательный параметр «размер» определяет объем резервируемой для стека памяти (в словах). Если вы не задаете размер, Турбоассемблер резервирует по умолчанию 1 килобайт. Директивы стека обычно требуется использовать, если вы пишете на языке ассемблера автономную программу. Большинство языков высокого уровня сами создают для вас стек. |
Макрокоманды начала и завершения программы
Макрокоманда startupcode обеспечивает код инициализации, соответствующий текущей модели и операционной системе. Она отмечает также начало программы. Эта макрокоманда имеет следующий синтаксис:
startupcode
Макрокоманда инициализирует регистры DS, SS и SP и помещает идентификатор @Startup в начало кода инициализации, который генерируется по директиве startupcode. Он представляет собой ближнюю метку, отмечающую начало программы.
Макрокоманда exitcode используется для генерации кода завершения, соответствующего текущей операционной системе. Вы можете использовать ее в модуле несколько раз (для каждой точки входа). Эта макрокоманда имеет следующий синтаксис:
exitcode [возвращаемое_значение]
Необязательное «возвращаемое_значение» задает число, которое должно возвращаться в операционную систему – «код возврата». Если вы не задаете возвращаемое значение, ассемблер предполагает, что это значение содержится в регистре AL.