Ассемблер имеет ряд операторов, которые позволяют управлять процессом ассемблирования. Эти операторы называются директивами. Они действуют только в процессе ассемблирования программы и не генерируют машинных кодов. Рассмотрим основные директивы.
Директивы резервирования и инициализации данных:
Имя | Длина | Применение |
db | 1 байт | · целые знаковые и беззнаковые числа · символьные строки, длина которых определяется длиной строки, указанной в кавычках |
dw | 2 байта | · целые знаковые и беззнаковые числа · смещение в сегменте · адрес сегмента |
dd | 4 байта | · целые знаковые и беззнаковые числа · адрес, включающий сегмент и смещение в сегменте |
Директивы определения сегмента:
Формат директивы | Назначение |
.CODE [имя] | Начало сегмента кода |
.DATA | Начало сегмента инициализированных данных. |
.CONST | Начало сегмента постоянных данных (констант) модуля |
.STACK [размер] | Начало сегмента стека модуля. Параметр [размер] задает размер стека |
Директива model определяет модель памяти. Самые распространённые виды моделей памяти – это small и tiny. Первый наиболее часто используется для обычных программ, второй – для программ формата.com.
|
|
При использовании директивы model транслятор делает доступными несколько идентификаторов (предопределенных имен), к которым можно обращаться во время работы программы, с тем, чтобы получить информацию о тех или иных характеристиках данной модели памяти. Перечислим основные идентификаторы и их значения:
Имя идентификатора | Назначение |
@code | адрес сегмента кода |
@data | адрес сегмента данных |
@stack | адрес сегмента стека |