Программа на языке ассемблера представляет собой последовательность операторов, описывающих выполняемые операции. Оператором (строкой) исходной программы может быть или команда, или псевдооператор (директива) ассемблера. Команды выполняются в процессе решения задачи на компьютере, а директивы – в процессе ассемблирования (трансляции) программы. Следовательно, в отличие от команд директивы сообщают ассемблеру (транслятору), что ему делать с командами и данными, которые вводятся в программе. Ниже в таблице 2 перечисляются наиболее часто используемые директивы ассемблера [5].
Таблица 2
Синтаксис и функции псевдооператоров (директив)
Псевдооператор
| Формат и Функция
|
|
|
Определения данных
DB
| [имя] DB выражение [, …….]
определяет переменную или присваивает ячейке памяти начальное значение. Резервирует 1 или более байт (при наличии запятых)
|
DW
| [имя] DW выражение [, …….]
аналогично предыдущему резервирует двухбайтовые слова
|
DD
| [имя] DD выражение [, …….]
Резервирует 4-х байтовые двойные слова
|
Определения сегмента или процедуры
SEGMENT
| Имя_cer SEGMENT [тип_выравнивания (подгонки)] [тип_связи] [‘класс’]
....
Имя_cer ENDS
Определяет границы сегмента программы. Обязательно содержит начало описания Имя_cer SEGMENT и окончание описания Имя_cer ENDS
|
ASSUME
| ASSUME регистр_cer: Имя_cer [, …….]
Или ASSUME регистр_cer: NOTHING
Cообщает Ассемблеру, какой регистр сегмента связан с соответствующим сегментом программы. Оператор ASSUME регистр_cer: NOTHING отменяет действие всех предыдущих операторов ASSUME для данного регистра
|
PROC
| Имя PROC [NEAR] или Имя PROC FAR
....
....
RET
имя ENDP
Присваивает имя последовательности операторов. Должно иметь начало PROC и окончание ENDP
|
Псевдооператор
| Формат и Функция
|
Управление трансляцией
END
|
END [метка точки входа]
Отмечает конец исходной программы
|
Внешние ссылки
PUBLIC
| PUBLIC идентификатор
Делает определенный ранее идентификатордоступным другим модулям программы, которые впоследствии должны быть присоединены к данному модулю
|
EXTERN
| EXTERN имя: тип [, ….]
Указывает, что имя определено в другом модуле программы
|
INCLUDE
| INCLUDE файл вставляет содержимое указанного файла в текущий файл исходной программы
|
Определение идентификаторов
EQU
| Имя EQU текст или
Имя EQU числовое_выражение
Постоянно присваивает идентификатору имя текст или числовое_выражение
Имя = числовое_выражение
Числовое_выражение присваивается идентификатору имя, но может быть переприсвоено
|
Обязательные требования к структуре ASM -программы следующие [6]:
- программа может использовать четыре сегмента памяти, начальные адреса которых должны быть загружены в регистры микропроцессора CS, DS, ES, SS, а сами сегменты в явном виде определены в программе в виде операторных скобок
- имя_сегмента segment
-........
- имя_сегмента ends,
например,
DSEG SEGMENT PARA PUBLIC ‘DATA’