Шаг 42.
Описание и инициализация массива в программе
На этом шаге мы рассмотрим описание и инциализацию массивов.
Одной из часто используемых конструкций при создании программ являются массивы. Для того чтобы
разобраться в возможностях и особенностях обработки массивов в программах на Ассемблере, нужно ответить на
следующие вопросы:
- как описать массив в программе;
- как инициализировать массив, то есть как задать начальные значения его элементов;
- как организовать доступ к элементам массива?
На этом шаге мы дадим ответ на первые два вопроса.
Описание и инициализация массива в программе
Специальных средств описания массивов в программах Ассемблера, конечно, нет. При необходимости использовать
массив в программе его нужно моделировать одним из следующих способов:
- перечислением элементов массива в поле операндов одной из директив описания данных. При перечислении
элементы разделяются запятыми. Например:
;массив из 5 элементов. Размер каждого элемента 4 байта.
mas DD 1,2,3,4,5
- используя оператор повторения DUP. К примеру:
;Массив из 5 нулевых элементов. Размер каждого элемента 2 байта.
mas DW 5 DUP (0) .
Такой способ определения используется для резервирования памяти с целью размещения и инициализации элементов
массива;
- используя директивы LABEL и REPT. Пара этих директив может облегчить описание больших
массивов в памяти и повысить наглядность такого описания. Директива REPT относится к макросредствам
языка ассемблера и вызывает повторение указанное число раз строк, заключенных между директивой и строкой
ENDM. К примеру, определим массив байт в области памяти, обозначенной идентификатором MAS_B.
В данном случае директива LABEL определяет символическое имя MAS_B аналогично тому, как это
делают директивы резервирования и инициализации памяти. Достоинство директивы LABEL в том, что она не
резервирует память, а лишь определяет характеристики объекта. В данном случае объект - это ячейка памяти. Используя
несколько директив LABEL, записанных одна за другой, можно присвоить одной и той же области памяти
разные имена и разный тип, что и сделано в следующем фрагменте:
mas_b LABEL BYTE
mas_w LABEL WORD
REPT 4
DW 0f1fh
ENDM
В результате в памяти будет создана последовательность из четырех слов, каждое из которых имеет значение F1F0H. Эту
последовательность можно трактовать как массив байт или слов в зависимости от того, какое имя области мы будем
использовать в программе MAS_B или MAS_W.
На следующем шаге мы рассмотрим способы доступа к элементам массива.
Предыдущий шаг
Содержание
Следующий шаг