Директивы EQU, LABEL, команды сложения и вычитания
Директивы EQU
Эта директива определяет значение, которое можно использовать для подстановки в других командах. Директива не определяет элемент данных, она назначает имя какому-либо числу. Пусть в сегменте данных записана директива: TIME EQU 20
Теперь в какой бы команде или директиве не использовалось бы слово TIME, ассемблер вместо него подставит значение 20. Например, директиву
FIELD DB TIME DUP (?)
Ассемблер преобразует в директиву
FIELD DB 20 DUP (?)
Другой пример:
CON EQU 70
…
MOV CX, CON
Это равносильно записи
MOV CX, 70
Директива LABEL
Директива LABEL может создавать имена для любых ячеек памяти независимо от содержимого и предполагаемого использования. Она содержит информацию о типе определяемого имени, а тип однозначно указывает допустимое определение имени. Директива LABEL имеет следующий формат:
<имя> LABLE <тип>
В качестве типа фигурируют одно из ключевых слов: BYTE, WORD, DWORD, NEAR, FAR.
Пример:
BUFFER LABLE WORD
BUF DB 200 DUP(?)
Директива LABEL обычно применяется для присваивания второго имени некоторой ячейке памяти, с тем, чтобы к ней можно было бы обращаться командами, оперирующими различными типами данных. Если, например, одну и ту же область памяти в одном случае необходимо считать массивом байт, а в другом – массивом слов, то команда
MOV AL, BUF ; передает в аккумулятор AL первый байт массива,
MOV AХ,BUFFER; передает в аккумулятор AХ первое слово массива.
Если бы директивы LABLE не было, для передачи в АХ первого слова массива потребовались бы более громоздкая команда.