Використання в адресних виразах арифметичних або логічних операціях для всіх типів даних.
Операнди розглядаються як 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.