Читать «Assembler. Программирование на языке ассемблера IBM PC» онлайн - страница 191

Unknown Author

14.6.4. Другие директивы

<имя> LABEL <mun>

Эта директива эквивалентна предложению t

<имя> EQU THIS <тип>

(см. разд. 14.3) и определяет имя, которому приписывается текущий адрес (значение счетчика размещения $) и указанный тип. Имя должно быть уникальным в программе. Допустимые типы: BYTE, WORD, DWORD, NEAR, FAR.

Директива LABEL используется для того, чтобы на следующую за ней команду или переменную можно было ссылаться по имени с иным типом, чем это разрешается согласно описанию команды или переменной. Например:

FL LABEL FAR ;FL и NL метят одну и ту же команду,

NL: MOV АХ,0 ;но FL - дальняя метка, a NL - близкая

.RADIX <константное выражение>

В ЯА числа могут быть записаны в системах счисления с основаниями 10, 16, 8 и 2 (10d, 10h, 10q, 10b и т. п.). Если буква-спецификатор в конце числа не указана (например, 10), то подразумевается десятичное число. Однако это правило можно изменить с помощью директивы .RADIX: значение ее операнда указывает основание той системы счисления, которая теперь будет подразумеваться, когда число записано без буквы-спецификатора. Значением операнда должно быть число 10, 16, 8 или 2 (если оно указано без спецификатора, то всегда трактуется как десятичное).

Отметим, что если по умолчанию установлена шестнадцатеричная система, то буквы b и d в конце числа трактуются как спецификатор, а не как цифра: например, 10b - это 10 в двоичной системе, a 10d - это 10 в десятичной системе; шестнадцатеричные же числа 10В и 10D надо записывать как 10Bh и 10Dh. Примеры:

.radix 16

;AX:=10h=16 ; АХ: =10 ;AX:as10Dhas269 ;десятичное 10 (1) ;АХ:=10 ;AX:=10h=16

MOV АХ,10 MOV АХ,10d MOV AX,l0Dh .RADIX 10 MOV AX,10 MOV AX,lOh

NAME <имя модуля>

По этой директиве указанное имя (от него берется 6 первых символов) присваивается текущему модулю программы и используется компоновщиком в диагностических сообщениях в случае обнаружения ошибок при объединении модулей программы: это имя указывается в скобках после имени файла с данным модулем. (В других целях это имя не используется.)

Например, если в модуле имеется директива NAME MODI и если в оттранслированном виде модуль находится в файле PROG.OBJ, тогда возможно такое сообщение об" ошибке на этапе компоновки (об имени DDD, указанном в данном модуле как внешнее, но не описанном как общее в других модулях):

Unresolved externals: DDD in file(s) PROG.OBJ(MODI)

В модуле должно быть не более одной директивы NAME. Если ее нет, в качестве имени модуля берутся первые 6 символов из текста, указанного в директиве TITLE, а если и ее нет, модулю дается имя А.

1.    Брэдли Д. Программирование на языке ассемблера для персональной ЭВМ фирмы ЮМ: Пер. в англ. - М.: Радио и связь, 1988. - 448 с.

2.    Скэнлон Л. Персональные ЭВМ ЮМ PC и XT. Программирование на языке ассемблера: Пер. с англ. - М.: Радио и связь, 1991. - 336 с.

3.    Абель П. Язык Ассемблера для ЮМ PC и программирования: Пер. с англ. -М.: Высшая школа, 1992. - 477 с.