- •Лабораторна робота №1
- •Xor ax, ax
- •Int 21h
- •Зміст звіту
- •2 Короткі теоретичні відомості
- •2.1. Етапи розробки програм мовою асемблер
- •2.2 Формати команд мікропроцесора 8086
- •2.3 Елементи мови асемблера
- •2.4 Формат команд і псевдооператорів мови асемблера
- •2.5 Структура програми
- •2.6 Псевдооператори мови асемблера
- •2.6.1 Опис сегмента
- •2.6.2 Псевдооператори визначення ідентифікаторів
- •2.6.3 Директиви опису даних
- •2.6.4 Оператори
- •2.7 Лістинг програми
- •2.8 Програмні переривання
2.6.2 Псевдооператори визначення ідентифікаторів
Для присвоєння деякому виразу або ідентифікатору символічного імені застосовуються псевдооператори: equ (equal – рівняється) і "=" (дорівнює).
В ході трансляції програми замість цього ідентифікатора асемблер підставить відповідний вираз. Вираз може бути представлений константами, іменами міток, символічними іменами й рядками в апострофах. Синтаксис псевдооператора equ:
ім'я_ідентифікатора equ рядок або
ім'я_ідентифікатора equ числовий_вираз
Синтаксис псевдооператора “=”:
ім'я_ідентифікатора = числовий_вираз
Незважаючи на зовнішню й функціональну подібність псевдооператори equ й “=” відрізняються наступним чином:
за допомогою equ ідентифікатору можна ставити у відповідність як числові вирази, так і текстові рядки, а псевдооператор “=” може використатися тільки із числовими вирази;
ідентифікатори, які визначені за допомогою “=”, можна перевизначити у вихідному тексті програми, а визначені з використанням equ – не можна.
Псевдооператор equ зручно використати для настроювання програми на конкретні умови виконання, заміни складних у позначенні об'єктів, багаторазово використовуваних у програмі, більше простими іменами інше. Псевдооператор “=” зручно використати для визначення простих, не залежних від місця завантаження програми в пам’ять, математичних виразів. Головна умова, щоб транслятор міг обчислити ці вирази під час трансляції.
Наприклад:
a1 equ 25h ;незмінне значення
a2 equ 37h
help equ ‘Клавіша F1’ ;опис символьного рядка
r1 equ a1 + a2 ;знаходження суми двох операндів
count1 equ cx ;перейменувати регістр
mas_1 equ ds: [bx+si] ;адреса масиву
r2 = a1 + a2 ;обчислення виразу
r2 = 5Ch ;константа
r3 = r2 – 02h ;обчислення виразу
2.6.3 Директиви опису даних
Асемблер надає дуже широкий набір засобів опису й обробки даних. Для опису простих типів даних у програмі використаються директиви, які, по суті є вказівками транслятору на виділення певного обсягу пам'яті.
Директиви опису даних простих типів дозволяють описати дані типу байт, слово, подвійне слово. Синтаксист цих директив має такий вигляд:
[Ім'я] db Вираз [, вираз...]
[Ім'я] dw Вираз [, вираз...]
[Ім'я] dd Вираз [, вираз...]
Ім'я — деяке символічне ім'я мітки або комірки пам'яті в сегменті даних, яке використовується в програмі.
Директиви db, dw, dd дозволяють резервувати пам'ять для даних розміром 1, 2 та 4 байта. Крім того за допомогою директиви db можна задавати символьний рядок з одного або більше символів. Рядок береться в лапки. У цьому випадку визначається стільки байт, скільки символів у рядку.
Для резервування даних замість виразу може бути знак питання (?), який показує, що вміст поля не визначено, тобто резервується.
Якщо потрібно задати декілька однакових значень, використовується вираз повторення n dup(x), де dup - операція дублювання, n - кількість повторів, x - інформація, яку потрібно занести в пам’ять.
Рядок може містити таку кількість символів, яка може розміститися в 132 позиціях.
Наприклад:
.data
perem_1 db 0ffh
perem_2 dw 3a7fh
perem_3 dd 0f54d567ah
pole_1 db 10dup (7)
pole_2 db 5 dup (?)
B_Tabl_1 db 0, 0, 5, 18
db 20, 30, 40, 80
W_Tabl dw 1025, 1148,15
Для запису тексту в елемент пам’яті застосовується оператор db, при цьому текст береться в одинарні лапки
mm1 db 'Запустити програму ’ , ’ $ '