Читать «Assembler. Программирование на языке ассемблера IBM PC» онлайн - страница 184
Unknown Author
Примеры:
LENGTH А = 100 LENGTH В ~ 100 LENGTH С = 1 LENGTH D = 1
N EQU 1011b
A DB 100 DUP(?)
В DW 100 DUP (1,5 DUP(0)) С DD 20,30,66 DUP(0)
D DB
Оператор LENGTH имеет смысл, только если в директиве, описывающей имя переменной, указан один операнд и им является конструкция вида k DUP(x); в этом случае оператор сообщает количество (к) элементов, описанных по этой директиве. В остальных случаях смысл оператора малопонятен.
SIZE <имя переменной>
И этот оператор относится к константным выражениям, а его операнд должен быть таким же, как и в операторе LENGTH. Значение оператора SIZE вычисляется по следующей формуле:
SIZE V = (ТУРЕ V) * (LENGTH V)
Оператор SIZE имеет смысл, только если в директиве, описывающей имя переменной, указан один операнд и им является конструкция вида k DUP(x); в этом случае оператор указывает количество байтов, занятых всеми элементами, описанных по этой директиве. В остальных случаях оператор мало о чем говорит.
.ТУРЕ <имя>
Это константный оператор, его операндом может быть любое имя. Значением оператора является число размером в байт, биты которого указывают следующие
характеристики имени (нумерация битов ведется справа налево от 0 до 7, значение 1 у бита означает наличие характеристики):
0 имя описано как метка или имя процедуры
1 имя описано как переменная
5 имя описано (так или иначе) в программе
7_имя описано (в EXTRN) как внешнее (остальные биты равны 0).
Для имен регистров, констант, сегментов, групп, макросов, типов записей и структур, полей записей и структур оператор выдает значение 20h. Нулевое значение оператора означает, что имя никак не описано в программе либо является названием команды, директивы или оператора, либо является именем, которому по директиве EQU поставлено в соответствие нечисловое значение.
Оператор .TYPE обычно используется в макроопределениях для проверки имен, заданных как фактические параметры.
THIS <тип>
Этот оператор относится к адресным выражениям. Его значение - адрес, который равен текущему значению счетчика размещения ($) и которому предписывается указанный тип. (В качестве операнда могут использоваться служебные слова BYTE, WORD, DWORD, NEAR, FAR или соответствующие им числовые значения).
Оператор THIS обычно используется в директиве EQU для порождения имени, адресующего текущую точку программы и имеющую заданный тип (в подобных целях используется и директива LABEL - см. разд. 14.6). Например:
Л EQU THIS WORD В DB 20 DUP (?) LI EQU THIS FAR L2: MOV AX,0
;A и В ссылаются на один и тот же массив, ; но А - массив из слов, а В - из байтов ;Ы и L2 метят одну и ту же команду,
; но L1 - дальняя метка, a L2 - близкая
HIGH <константное выражение^
LOW <константное выражение>
Это константные операторы. Их результат - старший (левый) байт (для HIGH) или младший байт (для LOW) значения операнда. Например: