Директивы 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 не было, для передачи в АХ первого слова массива потребовались бы более громоздкая команда.