Рис. 5.19. Директивы описания данных простых типов
Глава 5. Синтаксис ассемблера
На рисунке использованы следующие обозначения.
* Знак вопроса (?) показывает, что содержимое поля не определено, то есть при
задании директивы с таким значением выражения содержимое выделенного
участка физической памяти изменяться не будет. Фактически, создается не-
инициализированная переменная.
Ж Значение инициализации — значение элемента данных, которое будет занесено
в память после загрузки программы. Фактически, создается инициализирован-
ная переменная, в качестве которой могут выступать константы, строки симво-
лов, константные и адресные выражения в зависимости от типа данных.
Выражение — итеративная конструкция, о синтаксисе которой можно судить по
рисунку. В частности, она позволяет повторить занесение в физическую память
выражения в скобках столько раз, сколько повторений указано.
Имя — некоторое символическое имя метки или ячейки памяти в сегменте дан-
ных, используемое в программе.
Далее представлены поддерживаемые TASM и MASM директивы резервиро-
вания и инициализации данных, а также информация о возможных типах и диапа-
зонах значений, которые можно описывать или задавать с их помощью.
я DB — резервирование памяти для данных размером 1 байт. Директивой
мож-
но задавать следующие значения:
D выражение или константу, принимающую значение из диапазона
(для чисел со знаком) или 0...255 (для чисел без знака);
8-разрядное относительное выражение, использующее операции HIGH и LOW;
D символьную строку из одного или более символов, которая заключается в ка-
вычки (в этом случае определяется столько байтов, сколько символов в строке).
til DW — резервирование памяти для данных размером два байта. Директивой DW
можно задавать следующие значения:
выражение или константу, принимающую значение из диапазона
-32 768...32 767 (для чисел со знаком) или 0...65 535 (для чисел без знака);
D выражение, занимающее 16 или менее битов, в качестве которого может
выступать смещение в 16-битовом сегменте или адрес сегмента;
D
2-байтовая строка, заключенная в кавычки.
DD — резервирование памяти для данных размером четыре байта. Директивой
DD можно задавать следующие значения:
D выражение или константу, принимающую значение из диапазона
-32 768...+32 767 (для чисел со знаком и процессора i8086),
535 (для
чисел без знака и процессора
-2 147 483
147 483 647 (для
чисел со знаком и процессора
и выше) или 0...4 294 967 295 (для чисел
без знака и процессора
и выше);
относительное или адресное выражение, состоящее из 16-разрядного адреса
сегмента и 16-разрядного смещения;
О строку длиной до 4 символов, заключенную в кавычки.
Простые типы данных ассемблера
DF и DP — резервирование памяти для данных размером 6 байтов. Директивами
DF и DP можно задавать следующие значения:
выражение или константу, принимающую значение из
-32
767 (для чисел со знаком и процессора
535 (для
чисел без знака и процессора
-2 147 483
147 483 647 (для
чисел со знаком и процессора
и выше) или 0...4 294 967 295 (для чисел
без знака и процессора
и выше);
П относительное или адресное выражение, состоящее из 32 или менее битов
(для i80386) или 16 или менее битов (для первых моделей процессоров Intel);
П адресное выражение, состоящее из 16-разрядного сегмента и 32-разрядного
смещения;
П константу со знаком из диапазона
-
П константу без знака из диапазона
-
П строку длиной до 6 байтов, заключенную в кавычки.
DQ — резервирование памяти для данных размером 8 байтов. Директивой
можно задавать следующие значения:
Р выражение или константу, принимающую значение из диапазона
-32
767 (для чисел со знаком и процессора
0...65 535 (для
чисел без знака и процессора
-2 147 483
147 483 647 (для
чисел со знаком и процессора
и выше) или 0...4 294 967 295 (для чисел
без знака и процессора
и выше);
П относительное или адресное выражение, состоящее из 32 или менее битов
(для i80386) или
или менее битов (для первых моделей процессоров Intel);
D
1;
Р константу без знака из диапазона
- 1;
Р строку длиной до 8 байтов, заключенную в кавычки.
DT — резервирование памяти для данных размером 10 байтов. Директивой
можно задавать следующие значения:
Р выражение или константу, принимающую значение из диапазона
-32
767 (для чисел со знаком и процессора i8086), 0...65 535 (для
чисел без знака и процессора
-2 147 483
147 483 647 (для
чисел со знаком и
и выше) или 0...4 294 967 295 (для чисел
без знака и процессора
и выше);
Р относительное или адресное выражение, состоящее из 32 или менее
(для i80386) или 16 или менее битов (для первых
Р адресное выражение, состоящее из
сегмента и 32-разрядного
смещения;
Р константу со знаком из диапазона
-
Р константу без знака из диапазона
-
Р строку длиной до 10 байтов, заключенную в кавычки;
Р упакованную десятичную константу в диапазоне 0...99 999 999 999 999 999 999.
5. Синтаксис ассемблера
Заметим, что все директивы позволяют задавать строковые значения, но нуж-
но помнить, что в памяти эти значения могут выглядеть совсем не так, как они
были описаны в директиве. Причиной этому является упоминавшийся ранее прин-
цип «младший байт по младшему адресу». Для определения строк лучше исполь-
зовать директиву DB. Задаваемые таким образом строки должны заключаться в ка-
вычки. Эти кавычки могут быть одинарными
или двойными
Если задать
в строке подряд два таких ограничителя, то вторая кавычка (одинарная или двой-
ная) будет частью строки.
Для иллюстрации принципа «младший байт по младшему адресу» рассмотрим
листинг 5.3, в котором определим сегмент данных. В этом сегменте данных приве-
дено несколько директив описания простых типов данных.
Do'stlaringiz bilan baham: |