- •Теоретичні відомості
- •1. Структура простої програми мовою асемблера. Формат кодування програми.
- •2. Основні директиви : segment , end, ends, proc, endp, assume.
- •3. Основні вимоги при створенні програми. Приклади простих програм мовою асемблера.
- •4. Трансляція програми. Опції компіляції та загальна характеристика.
- •6. Застосування програми налагодження для пошуку помилок.
- •Розв’язування задач за тематикою заняття
- •Завдання для самостійної роботи
- •Теоретичні відомості
- •1. Директиви визначення даних.
- •2. Директива повторення dup.
- •3. Сталі.
- •5. Представлення в пам’яті цілих чисел.
- •6. Команда пересилки даних mov.
- •7. Команди двійкового додавання та віднімання.
- •Команда зміни знаку операнда neg
- •8. Обчислення цілих арифметичних виразів.
- •Розв’язування задач за тематикою заняття
- •Завдання для самостійної роботи.
- •Теоретичні відомості
- •1. Команда безумовного переходу jmp. Типи адресів переходу short,near та far.
- •2. Команди організації циклів ( loop,loopn,loopnz). Команда loop. Керування циклом за ecx/cx.
- •Керування циклом за ecx/cx із врахуванням ознаки zf
- •3. Команди умовних переходів.
- •5. Команда lea
- •Команда роботи зі стеком push та pop
- •Розв’язування задач за тематикою заняття
- •Завдання для самостійної роботи.
- •Розв’язування задач за тематикою заняття
- •Завдання для самостійної роботи.
- •Логічні операції та операції зсувів.
- •2. Команди логічних операцій (and, test, or, xor, not).
- •3. Команди зсувів та циклічних зсувів.
- •Команди зсувів (sal, sar, shl,shr)
- •Команда зсуву логічного операнда вправо – shr
- •3.2 Команди циклічних зсувів (rol, ror ,rcl, rcr). Циклічний зсув операнда вліво - rol
- •Циклічний зсув операнда вправо ror
- •Циклічний зсув операнда вліво через ознаку переносу - rcl
- •Циклічний зсув операнда вправо через ознаку переносу – rcr
- •Бітові маски.
- •Розв’язування задач за тематикою заняття
- •Завдання для самостійної роботи
- •1. Множення цілих чисел
- •2. Ділення цілих чисел
- •3. Перетворення в регістрах
- •Алгоритм введення–виведення цілих чисел
- •Виведення цілих чисел.
- •Введення цілих чисел.
- •Розв’язування задач за тематикою заняття
- •Завдання для самостійної роботи.
- •Теоретичні відомості
- •Особливості команд обробки рядків.
- •Ознака df. Команди зміни ознаки ( cld, std ).
- •Префікси повторення( rep, repe, repz, repne, repze ).
- •Команди обробки символьних рядків
1. Множення цілих чисел
Множення двох цілих чисел без знаку MUL
Схема команди: MUL множник
Алгоритм роботи
Команди вимагає явної вказівки місця розташування тільки одного співмножника, який може бути розташований у комірці пам'яті або регістрі. Місце розташування другого співмножника фіксоване і залежить від розміру першого співмножника:
якщо операнд, зазначений у команді, — байт, то другий співмножник розташовується в AL;
якщо операнд, зазначений у команді, — слово, то другий співмножник розташовується в AX;
якщо операнд, зазначений у команді — подвійне слово, то другий співмножник повинний розташовуватися в EAX.
Результат множення міститься також у фіксоване місце, обумовлене розміром співмножників:
при множенні байтів результат міститься в AX;
при множенні слів результат міститься в пари DX:AX;
при множенні подвійних слів результат міститься в пари EDX:EAX.
Стан ознак після виконання команди MUL : якщо старша половина результату нульова тоді OF та CF встановлюються 0, в противному випадку 1, значення SF, ZF, AF та PF – невизначені.
Множення двох цілих чисел зі знаком IMUL
IMUL множник
IMUL множник1,множник2 ; для і386 і вище
IMUL результат,множник1,множник2 ; для і386 і вище
Алгоритм роботи
Алгоритм команди з одним операндом співпадає з алгоритмом команди IMUL. Команди з двома і трьома операндами однозначно визначають розташування результату і співмножників у такий спосіб:
у команді з двома операндами перший операнд визначає місце розташування першого співмножника. На його місце згодом буде записаний результат. Другий операнд визначає місце розташування другого співмножника;
у команді з трьома операндами перший операнд визначає місце розташування результату, другий операнд — місце розташування першого співмножника, третій операнд може бути безпосередньо заданим значенням розміром у байт, чи слово подвійне слово.
Стан ознак після виконання команди IMUL: якщо розмір результату відповідає регістру призначення, тоді встановлює в нуль ознаки OF та CF, в противному значення ознак 1, значення SF, ZF, AF та PF – невизначені.
2. Ділення цілих чисел
Ділення двох цілих чисел без знаку DIV та зі знаком IDIV.
Схема команди: DIV дільник ;без знака
IDIV дільник ; зі знаком
Алгоритм роботи:
Для команди необхідно задати два операнди — ділене і дільник. Ділене задається неявно і розмір його залежить від розміру дільника, що вказується в команді:
якщо дільник розміром у байт, то ділене повинне бути розташоване в регістрі AX. Після операції частка міститься в AL, а залишок — у AH;
якщо дільник розміром у слово, то ділене повинне бути розташоване в парі регістрів DX:AX, причому молодша частина діленого знаходиться в AX. Після операції частка міститься в AX, а залишок — у DX;
якщо дільник розміром у подвійне слово, то ділене повинне бути розташоване в парі регістрів EDX:EAX, причому молодша частина діленого знаходиться в EAX. Після операції частка міститься в EAX, а залишок — у EDX.
Для команди IDIV залишок завжди має знак діленого. Знак частки залежить від стану знакових бітів (старших розрядів) діленого і дільника.
Стан ознак після виконання команди: OF, CF, SF, ZF, AF та PF – невизначені.
Результатом ділення є частка і залишок від ділення. При виконанні операції ділення можливе виникнення виняткової ситуації: 0 — помилка ділення. Ця ситуація виникає в одному з двох випадків: дільник дорівнює 0 або частка занадто велика для його розміщення в регістрі EAX/AX/AL.