стовувати процедуру зведення в ступінь через множення.
. Описати процедуру sum (x, y, z), яка присвоює вектору z суму векторів х і у. Використовувати її для обчислення d = a + b + c.
. Описати процедуру mах (х, у), яка присвоює х більша з цілих чисел х і у, а у - менше.
. * Дано три натуральних числа. Визначити їх найбільший спільний дільник.
3. Бітові операції
Мета: Розглянути прийоми використання бітових операцій при програмуванні на мові асемблер.
Завдання:
Гј Вивчити синтаксис і прийоми використання логічні команди: заперечення - NOT, кон'юнкції - AND, диз'юнкції - OR, що виключає АБО - XOR і перевірки - TEST.
Гј Вивчити синтаксис і використання команд:
o логічних зрушень вліво і вправо - SHL і SHR;
o арифметичних зрушень вліво і вправо - SAL і SAR;
o циклічних зрушень вліво і вправо - ROL і ROR;
o циклічних зрушень вліво і вправо через перенос - RCL і RCR;
Гј Навчитися робити обчислення логічних виразів.
Логічні команди.
Поряд із засобами арифметичних обчислень, система команд мікропроцесора має також засоби логічного перетворення даних. Під логічними розуміються такі перетворення даних, в основі яких лежать правила формальної логіки: заперечення (НЕ), кон'юнкцію (І) і диз'юнкцію (АБО) .
Логічним командам притаманний ряд спільних рис:
1. Вони реалізують порозрядні операції: i-й розряд результату залежить тільки від i-х розрядів операндів. При цьому одна і та ж операція виконується відразу над всіма розрядами операндів одночасно, паралельно.
2. Формальна логіка працює на рівні тверджень істинно і хибно . У всіх логічних командах біт 1 трактується як В«істинаВ», а біт 0 - як В«брехняВ». Саме при такому трактуванні ці команди і реалізують логічні операції заперечення, кон'юнкції і диз'юнкції.
. Ці команди міняють всі прапори умов, але інтерес зазвичай викликає тільки прапор нуля ZF. Інші прапори в основному призначені для роботи з числами і в логічних операціях малоінформативні.
. Операндами логічних команд повинні бути або байти, або слова, але не те й інше одночасно.
Логічні команди:
Гј NOT - змінює значення кожного біта операнда на протилежне. Результат записується на місце операнда;
Гј AND - виробляє порозрядне логічне множення двох операндів і поміщає результат в перший операнд; p>
Гј OR - виробляє порозрядне логічне додавання двох операндів. і поміщає результат в перший операнд;
Гј XOR - виробляє порозрядне логічну операцію виключає АБО над двома операндами і поміщає результат в перший операнд;
Гј TEST - аналог команди AND, виконує поразрядно логічну операцію AND над бітами операндів. Стан операндів залишається колишнім, змінюються лише прапори нуля ZF, знака SF, і парності PF, що дає можливість аналізувати стан окремих бітів операнда без зміни їх стану. Результат логічного множення нікуди не записується.
Синтаксис:
NOT dst ; (dst)? not (dst)
AND dst, src ; (dst)? (Dst) and (src) dst, src ; (dst)? (Dst) or (src) dst, src ; (dst)? (Dst) xor (src) dst, src ; (dst) test (src)
У цих командах припустимі наступні комбінації операндів:
dstsrcr8i8, r8, m8m8i8, r8r16il6, rl6, ml6m16il6, rl6...