Простые директивы определения данных
Вы можете определять данные с помощью директив DB, DW, DD, DQ, DF, DP или DT. Как показано в следующей таблице, эти директивы выделяют простые данные различного размера:
Директивы определения данных различного размераДиректива | Значение |
---|
DB | Определение данных размером в байт. | DW | Определение данных размером в слово. | DD | Определение данных размером в двойное слово. | DQ | Определение данных размером в четверное слово. | DF | Определение данных размером в 6 байт (48-битовый дальний указатель процессора 80386). | DP | Определение данных размером в 6 байт (48-битовый дальний указатель процессора 80386). | DT | Определение данных размером в 10 байт. |
Синтаксис поля "значение" для каждой из этих директив различается и основывается на возможности представлять отдельные величины с помощью данных определенного размера (например, байтовые данные нельзя интерпретировать, как число с плавающей точкой).
В директиве DB (байт) можно задавать следующие значения:
Выражение-константу, имеющую значения в диапазоне от -128 до 255 (байты со знаком в диапазоне от -128 до +127; беззнаковые байтовые значения в диапазоне от 0 до 255).
8-битовое относительное выражение, использующее операции HIGH и LOW.
Символьную строку из 1 или более символов с использование стандартного формата заключенной в кавычки строки. В этом случае определяется несколько байт, по одному на каждый символ строки.
Значениями директивы DW (слово) могут быть:
Выражение-константа в диапазоне от -32768 до 65535 (слова со знаком в диапазоне от -32768 до 32767, беззнаковые слова в диапазоне от 0 до 65535).
Относительное выражение, занимающее 16 или менее бит (включая смещение в 16-битовом сегменте, сегмент или значение группы).
Одно- или двухбайтовая строка в стандартном формате (строка, заключенная в кавычки).
Значениями директивы DD (двойное слово) могут быть:
Выражение-константа в диапазоне от -2147483648 до 4294967295 (при выборе процессора 80386) или от -32768 до 65535 в противном случае.
Относительное адресное выражение, состоящее из 16-битового сегмента и 16-битового смещения.
Строка длиной до 4 символов в стандартном формате (строка, заключенная в кавычки).
Значениями директивы DQ (четверное слово) могут быть:
Выражение-константа в диапазоне от -2147483648 до 4294967295 (при выборе процессора 80386) или от -32768 до 65535 в противном случае.
Относительное или адресное выражение, состоящее из 32 или менее бит (при выборе процессора 80386) или 16 или менее бит (для всех других процессоров).
Положительная или отрицательная константа, имеющая значение в диапазоне от -2 с 63 степени до 2 в степени 63-1 (четверное слово со знаком в диапазоне от 2 в 63 степени до 2 в степени 63-1, беззнаковое четверное слово в диапазоне от 0 до 2 в степени 64-1).
Строка длиной до 8 байт в стандартном формате (строка, заключенная в кавычки).
Значениями директив DF и DP (48-битовый дальний указатель процессора 80386) могут быть:
Выражение-константа в диапазоне от -2147483648 до 4294967295 (при выборе процессора 80386) или от -32768 до 65535 в противном случае.
Относительное или адресное выражение, состоящее из 32 или менее бит (при выборе процессора 80386) или 16 или менее бит (для всех других процессоров).
Относительное адресное выражение, состоящее из 16-битового сегмента и 16-битового смещения.
Положительная или отрицательная константа, имеющая значение в диапазоне от -2 в 47 степени до 2 в степени 48-1 (6-байтовое значение со знаком в диапазоне от 2 в 47 степени до 2 в степени 47-1, беззнаковое 6-байтовое значение в диапазоне от 0 до 2 в степени 48-1).
Строка длиной до 6 байт в стандартном формате (строка, заключенная в кавычки).
Значениями директивы DT могут быть:
Выражение-константа в диапазоне от -2147483648 до 4294967295 (при выборе процессора 80386) или от -32768 до 65535 в противном случае.
Относительное или адресное выражение, состоящее из 32 или менее бит (при выборе процессора 80386) или 16 или менее бит (для всех других процессоров).
Относительное адресное выражение, состоящее из 16-битового сегмента и 16-битового смещения.
Положительная или отрицательная константа, имеющая значение в диапазоне от -2 в 79 степени до 2 в степени 80-1 (10-байтовое значение со знаком в диапазоне от 2 в 79 степени до 2 в степени 79-1, беззнаковое 10-байтовое значение в диапазоне от 0 до 2 в степени 80-1).
Строка длиной до 10 байт в стандартном формате (строка, заключенная в кавычки).
Упакованная десятичная константа, имеющая значение в диапазоне от 0 до 99999999999999999999.
Примечание: При сохранении данных в памяти младшее значение всегда записывается перед старшим значением.
В некоторых случаях числовые и строковые константы в директивах определения простых данных отличаются от тех, которые встречаются в стандартных выражениях Турбо Ассемблера. Например, директивы DB, DP, DT и DQ воспринимают заключенные в кавычки строки, которые могут иметь большую длину, чем строки, воспринимаемые в выражениях.
Заключенные в кавычки строки выделяются одинарными (") или двойными (") кавычками. Внутри строки два ограничителя указывают, что данный символ-ограничитель должен быть частью строки, например:
"what""s up doc?"
представляет следующие символы:
what"s up doc?
В качестве значения в директивах DD, DQ и DT можно указывать числа с плавающей точкой. Приведем некоторые примеры таких чисел:
1.0E30 ; означает 1.0x10^30 2.56E-21 ; означает 2.56х10^E-21 1.28E+5 ; означает 1.28х10^+5 0.025 ; означает .025
Турбо Ассемблер распознает эти числа с плавающей точкой, поскольку они содержат после начальной цифры символ точки. В MASM эти правила могут быть ослаблены, например:
DD 1E30 ; допустимое значение с плавающей точкой в ; режиме MASM DD .123 ; допустимо только в режиме MASM
Примечание: Для ясности вы рекомендуем всегда использовать начальную цифру и десятичную точку.
Турбо Ассемблер допускает также указывать в директивах DD, DQ и DT кодированные вещественные числа. Кодированное вещественное число - это шестнадцатиричное число точно определенной длины. Суффикс R указывает, что число будет интерпретироваться, как кодированное вещественное число. Длина числа должна заполнять требуемое поле (плюс одна цифра, если начальной цифрой является 0. Например:
DD 12345678r ; допустимое число DD 012345678r ; допустимое число DD 1234567r ; недопустимое число (слишком ; короткое)
Другие значения суффиксов (D, H, O, B) действуют аналогично тем, которые указываются в обычных выражениях.
Некоторые простые директивы определения данных интерпретируют другие числовые константы особым образом. Например, если вы не задаете основания для значения в директиве DT, то Турбо Ассемблер использует двоично-десятичное представление (BCD). Другие директивы предполагают десятичное значение:
DD 1234 ; десятичное DT 1234 ; BCD
Если значение представляет собой простую положительную или отрицательную константу, используемое по умолчанию основание (задаваемое директивой RADIX) не применяется в директивах DD, DQ и DT. Например:
RADIX 16 DW 1234 ; шестнадцатиричное значение 1234 DD 1234 ; десятичное значение 1234
Примечание: Числовые константы и директива RADIX подробнее описываются в этой главе.
1 2 3 4 5 6
8 8 8
| |