Программирование на Ассемблер к.т.н., доц. Красов А.В. Лекция 7 ФакультетМТС Курс3 Семестр6 Форма контролязачет Лекции14 часов Лабораторные работы12 часов к.т.н., доцент Красов Андрей Владимирович директор УИЦ ИТТ, доцент кафедры ИБТС Куратор специальности «Защищенные системы связи» Автор курса
Язык ассемблера, кроме описания простых переменных, поддерживает массивы, структуры и объединения. Сложные структуры данных Описание массива Массивы в языке ассемблера могут быть заданны двумя способами: перечислением значений; используя оператор повторения dup; с помощью директив label и rept. Задание массива перечислением: при описании переменных значения разделяются символом, (запятая). Пример: masdd1, 2, 3, 4, 5 Задание массива через оператор повтора: Masdw5dup(0). Задание массивов с помощью директив label и rept. Директива rept относится к макросредствам языка ассемблера и вызывает повторение указанных строк. Пример: mas label word rept4 dw 0f1ah endm Метка mas указывает на начало массива, директива rept 4 повторяет 4 раза строки dw 0f1ah, и тем самым создает массив с указанными начальными значениями. Доступ к ячейкам массивов Для доступа к элементам массива указывается адрес начала и смещение, для приведенных выше примеров: mas + (смещение*размер элемента). Подобным образом можно организовать работу и с двухмерными массивами. Кроме прямого способа адресации элементов памяти ест возможность косвенного обращения к ячейки через регистр. В этом случае указывается: имя массива[регистр]. Например: mas dw 0,1,2,3, … mov si, 2 mov ax, mas[si]
Описание структуры В отличие от массивов являющихся объединением однородных элементов, структура позволяет в одной переменной объединить поля различных типов. Описание шаблона структуры выглядит следующим образом: Имя структуры STRUCT Описание полей … имя структуры ENDS В разделе описания полей директивами db, dw, dd, dq и dt резервируется память для размещения полей структуры. Например, шаблон структуры для описания структуры, содержащей информацию о человеке (имя – 20 символов, адрес – 40 символов, возраст - число): Bookstruct Namedb 20 dup( ) Adresdb 40dup( ) Yeardb2dup(?) Book ENDS Для создания переменной типа структура необходимо указать: имя переменной имя структуры. Например: b1 Book b2 Book Поля структуры b1 определены при инициализации данных. Для доступа к полям структуры используется символ. (точка): адрес структуры. имя поля На самом деле оператор., вычисляет следующие значение: (адрес структуры) +(смещение поля структуры). Например: b1.Name.