Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Опорний конспект лекцій_ Асемблер.Docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
506.89 Кб
Скачать
      1. Доступ до елементів масиву

Адрес елемента в масиві:

база + (індекс * розмір_елемента),

де база – початковий (базовий) адрес масиву;

індекс – номер елемента мінус одиниця (нумерація елементів масива в асемблері починається з 0.

Режими адресації:

o індексна адресація із зміщенням – ефективний адрес формується із двох компонент:

o постійної (базової) – вказівкою прямого адреса масиву у вигляді імені ідентифікатора масиву;

o змінної (індексної) – вказівкою імені індексного регістра.

mas dw 0,1,2,3,45

mov si,4

mov ax, mas[si] ; помістити 3-й елемент масива mas у регістр ax

o базова індексна адресація із зміщенням – ефективний адрес формується із трьох компонент:

o постійної (необов’язковий елемент) – вказівкою прямого адреса масиву у вигляді імені ідентифікатора масива;

o змінної (базової) – вказівкою імені базового регістра (любий із регістрів загального призначення);

o змінної (індексної) – вказівкою імені індексного регістра (любий із регістрів загального призначення, за винятком esp/sp. Індекс може масштабуватися - i*2, i*4, i*8. Так як ця можливість появилася в МП моделі i486, то необхідно використовувати в програмі директиву .486).

Домовленості, щодо назв адресацій:

o якщо для описання адреса використовується тільки один регістр (базовий), то мова йде про базову адресацію:

; пересилання байта в область даних по адресу ebx mov al,[ebx]

o якщо для задання адреса використовується пряма адресація (у вигляді ідентифікатора) у поєднанні з одним регістром, то це індексна адресація:

; скласти вміст eax із подвійним словом по адресу mas + (ebx)*4 add eax, mas[ebx*4]

Базово-індексну адресацію можна об’єднувати з прямою або з вказанням безпосереднього значеня:

mov ax, mas[ebx][ecx*2] ; адрес операнда [mas+(ebx)+(ecx)*2]

sub dx, [ebx+8][ecx*4] ; адрес операнда [(ebx)+8+(ecx)*4]

      1. Двомірні масиви

Спеціальних даних для описання такого типу даних в асемблері нема. Двомірний масив необхідно моделювати. Адрес (i, j) елементу обчислюється по формулі:

(база + кількість_елементів_в_строці*розмір_елемента*i+j)

де i=0,…,n-1 – номер строки; j=0,…m-1 – номер стовпця.

Організувати адресацію двомірного масиву можна з використанням базово-індексної адресації:

o поєднання прямого адреса, як базового компонента адреса, і двох індексних регістрів для зберігання індексів:

mov ax, mas[ebx][esi]

o поєднання двох індексних регістрів, один із яких є базовим і індексним, а другий –

тільки індексним.

mov ax,[ebx][esi]

8.2. Структури

Структура – тип даних, який складається із фіксованого числа елементів різного типу. Для використання структур у програмі необхідно виконати три дії: задати шаблон структури, визначити екземпляр структури, організувати звернення до елементів структури.

      1. Описання шаблона структури

ім’я_структури STRUC

<описання полів>

ім’я_структури ENDS

де описання полів являє собою директиви описання даних db, dw, dd, dq, dt. Шаблон необхідно розміщувати перед сегментом даних або на початку сегмента даних. Приклад шаблону:

worker

struc

Name

db

30 dup

(“

“)

;

інформація про співробітника

Posada

db

30 dup

(“

”)

;

посада

Age

db

2 dup

(“

“)

;

вік

Stat

db

“ ”

;

стать

worker

ends