Використання в адресних виразах арифметичних або логічних операціях для всіх типів даних.


 

Операнди розглядаються як 16 - бітні числа і результат також являє собою 16 – бітне число. Це наступні операції:

“+”; унарне та бінарне арифметичне додавання;

“-”; бінарне арифметичне віднімання або унарна від’ємна величина;

“*”; множення;

“/” ; частка при діленні (ціла частина);

MOD ; залишок при діленні;

NOT ; логічна операція Ні (інверсія);

AND ; логічна операція І & (порозрядна);

OR ; логічна операція АБО (порозрядна);

XOR ; логічна операція додавання по модулю два (порозрядна);

SHL ; логічний зсув вліво;

SHR ; логічний зсув вправо;

Операції порівняння:

EQ – еквівалентно;

NE – нееквівалентно;

LT – менше;

LE – не більше;

GT – більше;

GE – не менше;

NUL – ( використовується для завдання нульового фактичного параметра при макровиклику ).

Виділення байту:

HIGH - виділення старшого байту 16 – бітового числа;

LOW - виділення молодшого байту 16 – бітового числа.

 

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

Використання дужок дозволяє вказувати порядок виконання операцій і робить вираз більш зрозумілим. Першим обчислюється самий внутрішній вираз в дужках. Порядок виконання операцій при відсутності дужок визначається їх приорітетом (причому операції одного приорітету виконуються по порядку зліва направо).

Приорітети:

1. Вирази в дужках, NUL, HIGH, LOW, *, /, MOD, SHL, SHR

2. +, -, EQ, LT, LE, GT, GE, NE

3. NOT

4. AND

5. OR, XOR

Це значить, що операції множення і ділення виконуються раніше операцій додавання і віднімання, а арифметичні операції раніше логічних. Для пояснення змісту адресних виразів потрібно використовувати дужки. Необхідно уникати складних адресних виразів, так як зрозуміти такі вирази важко, а допустити помилку легко.

Програміст повинен впевнитись, що в результаті обчислень виразів маємо число, що розміщується в адресному полі даної команди.

Всі операції крім операцій +, -, *, / повинні відокремлюватися від операндів хоча б одним проміжком.

 

Поле коментарів може містити свавільну інформацію, якою необхідно постачати поточний оператор. Основне правило для його включення - наявність перед ним крапки з комою. Розділення полів операнда і коментарів проміжком не обов’язково. Оператор мови асемблера може містити тільки коментар.

 

Приклад 11. Таблиця квадратів

Рішення більш складних задач часто можуть полегшити таблиці з готовим результатом. Для прикладу розглянемо програму обчислення квадрату 3-бітного числа. Щоб знайти адресу необхідного елементу таблиці програма повинна додати 3-бітне число до базової адреси. Таблицю можна розмістити і пам’яті за допомогою асемблерної псевдооперації DB.

Нехай число, що знаходиться між 0 та 7 розміщено в комірці за адресою ADDR1, а результат необхідно розмістити в комірку за адресою ADDR2.

Необхідно отримати квадрат числа 4. Елемент, що нас цікавить знаходиться в комірці з адресою SQTAB+4.