Програмування на мові Асемблер
Команди для роботи з рядками.
1.Команди передачі даних.
Ці команди діляться на чотири частини:загальні, в/в, адресні і прапорів.Операнди справа від імені команди визначають необхідні їй елементи даних.Їх може бути 2,1 або жодного.
Розглянемо основні команди.
2.Команда mov.
Ця команда найчастіше зустрічається в програмах на Аs.Для mov потрібні два операнди:операнд- джерело іоперанд- призначення; джерело записується після призначення:mov призначенн джерело (дані з джерела передаються в направленні стрілки,справа на ліво).
Наприклад: 1) mov ax bx ; axbx
значення регістра bx пересилається в регістр ах.Якщо значення ах= 0000,bx= 0123h, то після виконання mov значення ах стане дорівнювати 0123h, bx не зміниться.
2) mov cx, [num Pages]; ax [num Pages].
Пересилає значення, яке знаходиться в [num Pages] в регістер сх.Мітка num Pages визначає адресу в пам’яті,а [num Pages] відповідає даним записаним по цьому адресу.Тобто мітки визначають адреси,по яких дані зберігаються в пам’яті:
3) mov [level],dl ; [level] dl
значення з 8- бітового регістра dl пересилаються по адресу,на який вказує мітка.Така пересилка даних копіювання значення одного регістра в другий і переміщення даних з регістра в пам’ять одна з найбільших загальних операцій в програмуванні на Аs.Проте mov не може пересилати дані безпосередньо між двома адресами пам’яті.Тому,запис mov [count], [maxCount] є некоректним,щоб пересилати значення,записане в maxCount по адресу count потрібно виконати два кроки і використати проміжковий регістер:
mov ax,[maxCount]; ax [maxCount]
mov [count],ax ;[Count] ax
Ознайомимся з використанням команди mov на прикладі програми MOV.ASM (практичне заняття).
Робота з стеком (команди pop і push).
Cтекова пам’ять.
Стек це спеціальний сегмент пам’яті,який використовується деякими командами процесора 8086.Положення і розмір стека (до 64 кБт) визначаються програмою і програмістом.Cамий простий засіб створення стека заключається в використанні директиви STACK.Стек виконує три основні функції:
1) Тимчасове збереження значень регістрів;
2) Збереження адресів повернення з підпрограми;
3) Збереження динамічних змінних.