- •Теоретичні відомості
- •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. Команда безумовного переходу jmp. Типи адресів переходу short,near та far.
Команда безумовного переходу JMP.
Синтаксис : JMP мітка
Призначення: використовується в програмі для організації безумовного переходу як усередині поточного сегмента команд, так і за його межі.
Алгоритм роботи: Команда JMP у залежності від типу операнда (тип операнда визначається міткою та операторами безпосередньої адресації SHORT,NEAR та FAR ) змінює вміст або тільки одного регістра EIP(IP), або обох регістрів CS і EIP(IP):
якщо мітка в поточному сегменті команд, тоді асемблер формує машинну команду, операнд якої є значенням зі знаком, що є зсувом переходу відносно наступної за JMP команди. При цьому виді переходу змінюється тільки регістр EIP(IP);
якщо операнд у команді JMP — символічний ідентифікатор комірки пам'яті, тоді асемблер припускає, що в ній знаходиться адреса, за якою необхідно передати керування. Ця адреса може бути трьох видів:
значенням абсолютного зсуву мітки переходу відносно початку сегмента коду. Розмір цього зсуву може бути 16 або 32 біт у залежності від режиму адресації;
далеким покажчиком на мітку переходу в реальному і захищеному режимах, що містить два компоненти адреси — сегментний і зсув. Розміри цих компонентів також залежать від установленого режиму адресації (use16 або use32). Якщо поточним режимом є use16, то адреса сегмента і зсув займають по 16 біт, причому зсув розташовується в молодшому слові подвійного слова, що відводиться під цю повну адресу мітки переходу. Якщо поточним режимом є use32, то адреса сегмента і зсув займають, відповідно, 16 і 32 біт, — у молодшому подвійному слові знаходиться зсув, у старшому — адресу сегмента;
адресою в одному з 16 або 32-розрядних регістрів — ця адреса являє собою абсолютний зсув мітки, на яку необхідно передати керування, відносно початку сегмента команд.
Для розуміння різниць механізмів переходу в реальному і захищеному режимах потрібно пам'ятати наступне. У реальному режимі мікропроцесор просто змінює CSі EIP/IP відповідно до вмісту покажчика в пам'яті. У захищеному режимі мікропроцесор попередньо аналізує байт прав доступу AR у дескрипторі, номер якого визначається за вмістом сегментної частини покажчика. У залежності від стану байта AR мікропроцесор виконує або перехід, або переключення задач.
Виконання команди не впливає на регістр ознак.
Типи адресів переходу SHORT,NEAR та FAR.
При програмування мовою асемблера тип мітки переходу можна вказати безпосередньо з використанням операторів SHORT,NEAR та FAR. Оператор SHORT застосовують для здійснення коротких, NEAR ближніх(в межах сегменту) та FAR – далеких ( переходів без збереження контексту точки переходу).
2. Команди організації циклів ( loop,loopn,loopnz). Команда loop. Керування циклом за ecx/cx.
Синтаксис LOOP мітка
Алгоритм роботи:
виконати декремент умісту регістра ECX/CX;
аналіз регістра ECX/CX:
якщо ECX/CX=0, передати керування наступної за LOOP команді;
якщо ECX/CX =1, передати керування команді, мітка який зазначена в якості операнда LOOP.