Лекция 6

Нека дадем формално определение:

масив - структуриран тип данни, състоящ се от множество елементи от същия тип.

За да разберете възможностите и особеностите на обработката на масиви в асемблерни програми, трябва да отговорите на следните въпроси:

Как да опиша масив в програма?

Как да инициализираме масив, т.е. как да зададете началните стойности на неговите елементи?

Как да организираме достъпа към елементи от масив?

Как да организираме масиви с измерение повече от едно?

Как да организираме изпълнението типични операции с масиви?

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

Разбира се, няма специални средства за описване на масиви в асемблерни програми. Ако е необходимо да се използва масив в програма, той трябва да бъде моделиран по един от следните начини:

Чрез изброяване на елементи на масива в полето на операнда на една от директивите за описание на данни. Елементите са разделени със запетаи, когато са изброени. Например:

; масив от 5 елемента. Всеки елемент е с размер 4 байта:

Използване на оператора за повторение дуп. Например:

; масив от 5 нулеви елемента.

; Размерът на всеки елемент е 2 байта:

Този метод на дефиниция се използва за резервиране на памет с цел разпределяне и инициализиране на масивни елементи.

Използване на директиви етикет и отп. Няколко от тези директиви могат да улеснят описването на големи масиви в паметта и да увеличат яснотата на такова описание. Директива отп се отнася до макросите на асемблерния език и кара определен брой пъти да повтаря редовете, затворени между директивата и endm на реда. Например, нека дефинираме масив от байтове в областта на паметта, посочена от идентификатора mas_b. В този случай директивата етикет дефинира символично име mas_b, по същия начин, както правят директивите за резервиране и инициализация на паметта. Достойнство на директивата етикет в това, че не запазва памет, а само определя характеристиките на обекта. В този случай обектът е място в паметта. Използване на множество директиви етикет, записани едно след друго, можете да присвоите различни имена и различен тип на една и съща област на паметта, което се прави в следния фрагмент: