0988b24c

Простые директивы определения данных


Вы можете определять данные с помощью директив DB, DW, DD, DQ, DF, DP или DT. Как показано в следующей таблице, эти директи- вы выделяют простые данные различного размера:

Директивы определения данных различного размера Таблица 12.1 ---------------T------------------------------------------------¬ ¦ Директива ¦ Значение ¦ +--------------+------------------------------------------------+ ¦ DB ¦ Определение данных размером в байт. ¦ ¦ ¦ ¦ ¦ DW ¦ Определение данных размером в слово. ¦ ¦ ¦ ¦ ¦ DD ¦ Определение данных размером в двойное слово. ¦ ¦ ¦ ¦ ¦ DQ ¦ Определение данных размером в четверное слово.¦ ¦ ¦ ¦ ¦ DF ¦ Определение данных размером в 6 байт (48-бито-¦ ¦ ¦ вый дальний указатель процессора 80386). ¦ ¦ ¦ ¦ ¦ DP ¦ Определение данных размером в 6 байт (48-бито-¦ ¦ ¦ вый дальний указатель процессора 80386). ¦ ¦ ¦ ¦ ¦ DT ¦ Определение данных размером в 10 байт. ¦ L--------------+-------------------------------------------------

Синтаксис поля "значение" для каждой из этих директив разли- чается и основывается на возможности представлять отдельные вели- чины с помощью данных определенного размера (например, байтовые данные нельзя интерпретировать, как число с плавающей точкой).

В директиве 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 под- робнее описываются в Главе 5.


Содержание раздела