Инструменты пользователя

Инструменты сайта


examination:asm:question16

Вопрос №16. Описание и использование массивов на ЯА. Использование сегментных регистров по умолчанию. Примеры.

Массивы

Дадим формальное определение: массив — структурированный тип данных, состоящий из некоторого числа элементов одного типа.

Описание и инициализация массива в программе

Специальных средств описания массивов в программах ассемблера, конечно, нет. Чтобы использовать массив в программе, его нужно смоделировать одним из перечисленных далее способов.

  • Можно перечислить элементы массива в поле операндов одной из директив
  • описания данных. При перечислении элементы разделяются запятыми. Например,

;массив из 5 элементов. Размер каждого элемента 4 байта: mas dd 1,2,3,4,5

  • Можно использовать оператор повторения DUP. К примеру,

;массив из 5 нулевых элементов. Размер каждого элемента 2 байта: mas dw 5 dup (0)

Такой способ определения используется для резервирования памяти с целью размещения и инициализации элементов массива.

Использование массива

При работе с массивом следует указывать на элемент, к которому мы хотим обратиться в следующей форме

Mov ax,[A+2]

Причем, в зависимости от типа элементов массива число должно быть кратным 1- если массив состоит из байтов, 2 – если из слов, 4 – из удвоенных слов

Также можно обращаться с помощью регистра esi или edi, где число также должно быть кратно размеру элементов

Mov ax,[A+esi] Mov ax,[A+edi]

Использование сегментных регистров

Сегментные регистры предназначены для того, чтобы задавать адрес начала сегмента кода, данных и стека. При использовании команды lea, которая выдает смещение переменной относительно начала сегмента данных, именно благодаря наличию сегментных регистров можно узнать о начале сегмента данных, кода и стека.

Таким образом, без их указания, процессор не мог бы явно определить, где начинаются данные, а где начинается код.

examination/asm/question16.txt · Последние изменения: 2014/01/15 08:12 (внешнее изменение)