Учебное пособие: Програмування універсальних мікропроцесорів на мовах Асемблер

Можливо провести наступну класифікацію операндів:

- постійні або безпосередні операнди,

- адресні операнди,

- переміщувані операнди,

- лічильник адреси,

- регістровий операнд,

- базовий і індексний операнди,

- структурні операнди,

- записи.

Перелічимо тепер можливі типи операторів асемблера.

- арифметичні оператори,

- оператори зсуву,

- оператори порівняння,

- логічні оператори,

- індексний оператор,

- оператор перевизначення типу,

- оператор перевизначення сегмента,

- оператор іменування типу структури,

- оператор одержання сегментної складової адреси виразу,

- оператор одержання зсуву виразу.

Операнди та операнди – це складові частини виразів. Вирази являють собою комбінації операндів і операторів, розглянуті як єдине ціле.

Результатом обчислення виразу може бути адреса деякої комірки пам'яті або деяке константне (абсолютне) значення.Як і в мовах високого рівня, виконання операторів асемблера при обчисленні виразів здійснюється відповідно до їх пріоритетів. Операції з однаковими пріоритетами виконуються послідовно зліва на право. Зміна порядку виконання можлива шляхом розміщення круглих дужок, що мають найвищий пріоритет.

Розглянемо декілька базових операторів найбільш простих і розповсюджених типів, що дозволяють створювати найпростіші програми. Усі приклади подані для реального режиму роботи МП ІA-32. Крім того, усі числа в цих прикладах є шістнадцятковими, однак буква h наприкінці числа опущена, а також не використовуються мітки й імена констант і змінних.

1. mov < операнд призначення (приймач) >, < операнд – джерело > . Це -- основна команда пересилання даних загального призначення. Вона реалізує найрізноманітніші варіанти пересилання.

Наприклад:

MOV AL,03 - помістити число 03 у молодшу половину (байт) регістра АХ. Тут 03 - безпосередній операнд, а AL - регістровий операнд. Регістровий операнд -- це просте ім'я регістра. У програмі на асемблері можна використовувати імена всіх регістрів загального призначення і більшості системних регістрів.

MOV AХ,DX -- пересилання значення з регістра DX у AX. Тут обоє операнди -- регістрові.

MOV AХ,0000 -- очищення акумулятора.

MOV [0023],AХ -- пересилання вмісту акумулятора в комірку пам'яті за адресою DS:0023. Зверніть увагу на те, що без використання прямокутних дужок ця команда була б безглуздою і транслятор у цьому випадку видав би повідомлення про помилку. Саме використання таких дужок дає можливість трансляторові інтерпретувати перший операнд не як безпосереднє число, а як вміст комірки пам'яті, розташованої за адресою DS:0023. Тобто , число в прямокутних дужках сприймається як зсув логічної адреси комірки пам'яті.

К-во Просмотров: 208
Бесплатно скачать Учебное пособие: Програмування універсальних мікропроцесорів на мовах Асемблер