По директиве DB определяются данные размером в байт. Ассемблер вычисляет операнды и записывает их значения в последовательные байты памяти. Первому из этих байтов присваивается указанное имя, по которому на этот байт можно ссылаться в программе.
Способы задания операндов:
·? (знак неопределенного значения). Значение переменной можно не определять.
Пример: Х DB?
· Константное выражение со значением от –128 до 255.
Пример: А DB 254
· Множественная инициализация
Пример: переменная – массив из 5 элементов
A DB 1, 2, 3, 4, 5
Конструкция повторения DUP
Пример: байтовый массив А из 5 элементов с начальным значением 0 для каждого из них.
A DB 0, 0, 0, 0, 0
A DB 5 DUP (0)
Директива DW (define word, определить слово)
Директивой DW описываются переменные размером в слово. Аналогична директиве DB.
Способы задания операндов:
· Операнд?
Пример: A DW?
· Константное выражение со значением от -32768 до 65535
Пример: В DW 1234h
C DW -2
· Адресное выражение
Пример: C DB?
D DW С
· Несколько операндов, конструкция повторения
|
|
Пример:
E DW 40000, 3 DUP (?); E DW 40000,?,?,?
Директива DD (define double word, определить двойное слово)
По директиве DD описываются переменные, под которые отводятся двойные слова. Директива похожа на две предыдущие.
Способы задания операндов:
· Операнд?
· Целое число со значением от -231 до 232-1
· Константное выражение (со значением от -215 до 216-1)
· Адресное выражение (операнд задает абсолютный адрес)
· Несколько операндов, конструкция повторения
Директивы эквивалентности и присваивания
Описывают константы.
Директива EQU (equal, равно) – директива эквивалентности.
Синтаксис:
<имя> EQU <операнд>
Операнд – имя
Пример: Если используется регистр АХ для вычисления суммы, то его можно обозначить SUM и далее использовать имя SUM:
SUM EQU AX
Операнд – константное выражение
N EQU 100
K EQU 2*N-1
X DB N DUP (?)
X DB 100 DUP (?)
Операнд – текст
S EQU ‘Ошибка’
Директива присваивания
<имя> = <константное выражение>
K=10
A DW K; A DW 10
K=K+4
B DB K; B DB 14
Структура программы. Логические сегменты
И их параметры
Логический сегмент – именованная область памяти, адресуемая с неизменным значением одного из сегментных регистров.
Программный сегмент имеет следующую структуру:
<имя сегмента> SEGMENT <параметры>
<предложение>
…
<предложение>
<имя сегмента> ENDS
Пример программного сегмента:
A SEGMENT
X DW?
A ENDS
Директива ASSUME
ASSUME <пара> {, <пара>}
где <пара> - это <сегментный регистр>:<имя сегмента>
Пример:
ASSUME ES: A, DS: B, CS: C