Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаба №2, протокол (програмування).doc
Скачиваний:
0
Добавлен:
12.11.2018
Размер:
75.26 Кб
Скачать

2.1.3. Визначення масивiв

Масиви (рядки) розглядаються як послiдовнiсть елементiв одного визначеного типу. Тому директива, що використовується для огoлошення масиву у прогpамі визначаєтьcя типом елементiв масиву (db - для елементiв типу byte i dw - для елементiв типу word).

Приклад визначення масиву-вектора b[n] (n=3) з елементами типу word:

b dw 1F2Eh, 5AC2h, 0AE7Ch

2.1.4. Пересилання даних

Команда пересилання мае умовну назву (мнемоніку) тov i тaкий загальний синтаксис:

mov dst,srс

де src - об'єкт-джерело, а dst - об'єкт-приймач. Об'єктами можутъ бути регiстри або комiрки пам'ятi (тобто їx вмicт), як джерело також можуть використовуватися констaнтнi вирази. У випадку об'єкта у пам'ятi можливi рiзнi способи формування адреси. При цьому операнди повиннi мати один i той самий тип (byte, word, dword). Наприклад:

mov al, 5; запис числа 5 у регістр al

mov ax, bx; пересилання значення з peгiстpa bх у peгiстp ;

;ах (копiювання)

mov bl, m1 ; запиc значенyя змінної m1 у регістр bl

mov dl, m1+2 ; запиc у регістр dl значення за адресою,

; що бiльше адреси m 1 на 2

Оскiльки пересилання даних iз пам'ятi в пам'ять однiєю командою тov не виконуєтьcя, то для пересилання, наприклад, iз облаcтi naм'ятi т1 в область пaм'ятi т5 потрiбно спочатку елемент т1 завантажити у peгicтp, iз якого пoтiм переслати у т5:

mov al, m1

mov m5, al

Розряднiсть peгicтpa повинна вiдповiдати типу змiнних, якi копiюються. Найчаcтiше данi визначають у поточному ceгмeнтi даних, адресування якого здiйснюється peгicтpом ds. За замовчуванням процесор завжди використовує ds, тому для цих даних немає потреби у явному вказуванні сегмента. Якщо змiннi визначені в iншиx сегментах, то при звертaннi до них необxiдно вказати на їх сегмент. Для перемuкання сегментiв у командах тov найчастiше використовують так званий префiкс перемикання сегмента:

<iм’я сегментного регістра>:<адресний вираз>

Наприклад, якщо змiнна alfa визначена в ceгмeнтi кoдiв, то

mоv ах, cs:alfa ; запис значення змінної в регістр ах

Пересилання даних може здiйснюватися також за допомогою:

  • команд для роботи зi стеком push та рор;

- команд роботи з рядками lods, stos i movs тощо.

2.1.5. Можливості зміни атрибуту типу

Тип визначається вiдповiдними директивами при початковому оголошеннi змінної (див.п.1.2). Атрибут типу даних (byte, word, dword) можна змiнити за допомогою ­показчика типу ptr, псевдокоманди equ разом з операцiєю this, псевдокоманди label.

Нaпpиклад, визначено масив (послiдовнiсть) тas елементiв типу byte. Щоб мати можливiсть працювати з цим масивом, як з масивом слiв, тобто однiєю командою читати/записувати по 2 байти, визначимо нову (альтернативну) змiннy тasw типу word. Ця змiнна aдpecyє ту саму область пам' ятi, що й основна змiнна.

masw label word ; чи тasw equ this word

mas db 10,3ah,0,0bfh

Таке визначення даних дає можливiсть виконати команди

mоv ах,mаsw

mоv dx, masw+ 2

При цьому в регiстр ах будуть записані перші 2 байти масиву тas (число 3а0аh), в регістр dx bf00h, тобто наступнi 2 байти.

Той самий результат отримаємо i при виконaннi команд з оператором ptr:

mоv ax,word ptr mas

mоv dx,word ptr mas+2

У випадку оператора ptr тип визначається явно в команді.