- •Лабораторна робота 1.
- •1. Символи.
- •2 Представлення чисел у пам’яті пеом.
- •2.1 Цілі числа. Цілі числа без знака
- •2.2 Цілі числа зі знаком
- •3 Дійсні числа.
- •3.1 Представлення дійсних чисел у двійковому нормалізованому виді.
- •3.2 Машинні формати дійсних чисел
- •3.2.1. Формат 32 біти - float (або single)
- •3.2.2. Формат 64 біти - double
- •4. Завдання на лабораторну роботу.
- •5. Методичні вказівки з оформлення звіту
- •6. Рішення типового прикладу (без оцінки похибки перетворення)
- •7. Питання для самоперевірки
- •8. Література
- •Лабораторна робота 2.
- •1. 3 Формати файлів, що виконуються, які підтримуються у fasm
- •2. Завдання на лабораторну роботу:
- •3. Методичні вказівки з оформлення звіту
- •4. Питання для самоперевірки.
- •Лабораторна робота 3.
- •1. Підготовка до роботи.
- •2. Питання для самоконтролю.
- •3. Короткі теоретичні відомості.
- •3.1 Команди пересилання даних.
- •3.1.3 Операції зі стеком:
- •3.2 Робота із налагоджувачем OllyDbg.
- •3.2.2. Розглянемо основні команди меню OllyDbg.
- •4. Завдання на лабораторну роботу.
- •9. Література
- •Лабораторна робота 4.
- •3.2. Операції із прапорами процесора:
- •3.3 Команди розповсюдження знаку
- •4. Методичні вказівки з оформлення звіту
- •5. Рішення типового прикладу.
- •6. Завдання на лабораторну роботу
- •7. Критерії оцінювання.
- •8. Питання для самоперевірки
- •9. Література
- •Лабораторна робота 5.
- •3.2. Команди зсуву
- •3.3 Команди сканування бітів
- •4. Методичні вказівки з оформлення звіту
- •5. Приклади використання бітових команд
- •6. Завдання на лабораторну роботу
- •7. Критерії оцінювання.
- •8. Питання для самоперевірки
- •9. Література
- •Лабораторна робота 6.
- •1. Підготовка до роботи.
- •2. Питання для самоконтролю.
- •3. Короткі теоретичні зведення.
- •3.1. Команди безумовної передачі управління
- •3.1.1. Команда безумовного переходу jmp
- •3.2. Команди умовної передачі управління Jcc
- •3.2.1. Перша група команд умовного переходу.
- •3.2.2 Друга група команд умовного переходу.
- •3.2.3. Третя група команд умовного переходу.
- •3.3. Команди управління циклами looPx
- •3.3.1. Команда loop — перехід по лічильнику
- •3.3.2. Команда loope (loopz) перехід по лічильнику і якщо дорівнює
- •3.3.3. Команда loopne (loopnz) перехід по лічильнику і якщо не дорівнює
- •4. Методичні вказівки з оформлення звіту
- •5. Приклади використання бітових команд
- •6. Завдання на лабораторну роботу.
- •7. Критерії оцінювання.
- •8. Питання для самоперевірки
- •9. Література
- •Лабораторна робота 7.
- •1. Підготовка до роботи.
- •2. Питання для самоконтролю.
- •3. Короткі теоретичні відомості.
- •3.1. Реалізація основних операцій по обробці масивів мовою асемблера.
- •4. Методичні вказівки з оформлення звіту
- •5. Критерії оцінювання.
- •6. Завдання на лабораторну роботу.
- •7. Питання для самоперевірки
- •8. Література
- •Лабораторна робота 8.
- •1. Підготовка до роботи.
- •2. Питання для самоконтролю.
- •3. Короткі теоретичні відомості.
- •4. Приклади виконання деяких типових задач обробки рядків
- •4. Завдання на лабораторну роботу.
- •Лабораторна робота 9.
- •1. Підготовка до роботи.
- •2. Питання для самоконтролеві.
- •3. Короткі теоретичні відомості
- •3.1. Принципи організації підпрограм
- •3.2. Параметри процедур і значення, що повертаються
- •3.3. Використання загальних перемінних у процедурах
- •3.4. Особливості fasm по організації підпрограм (Windows - додатка).
- •Лабораторна работа 10-11.
- •3.1.2. Засобу bios
- •3.2. Уведення з клавіатури
3.2. Команди зсуву
Це — інший різновид побітових команд, що переміщають (зрушують) біти в полі операнда приймач, або вліво (Left), або вправо (Right) на визначене число розрядів — це значення зберігається в джерелі. Тому в мнемоніці цих команд обов'язково присутня буква L або R. Усі команди зсувів складаються з двох операндів.
Команди зсувів за принципом дії розділяються на лінійні (арифметичні і логічні зсуви) і циклічні зсуви.
Лінійні команди зсуву додають нуль або в молодший (нульовий) розряд (при зсуві вліво — L), або — у старший (при зсуві вправо — R). Причому старший розряд при зсуві вправо розрізняється для знакових і беззнакових даних. Зсув для знакових даних називається арифметичним, а для беззнакових — логічним. Розряди, що видаляються з операнда, послідовно вміщуються в біт CF регістра прапорів. Ці команди дозволяють дуже швидко виконувати ділення (при зсуві вправо — R) і множення (при зсуві вліво — L) операнда на ступені двійки.
Усі команди зсувів складаються з двох операндів.
Усі команди зсувів і циклічних зсувів використовують прапори переносу CF і переповнення OF.
При виконанні команд зсувів прапор CF завжди містить значення останнього висунутого біта:
• shr — логічний (беззнаковий) зсув вправо;
• shl — логічний (беззнаковий) зсув вліво;
• shld — логічний зсув подвійного слова вліво;
• shrd — логічний зсув подвійного слова вправо;
• sal — арифметичний зсув вліво;
• sar — арифметичний зсув вправо.
Циклічне зсув являє собою операцію зсув, при якій висунутий біт займає розряд, що звільнився:
• ror — циклічний зсув вправо;
• rol — циклічний зсув вліво;
• rcr — циклічний зсув вправо з переносом;
• rcl — циклічний зсув вліво з переносом.
Таблиця 3. - Можливі сполучення операндів для команд зсувів.
Приймач |
Джерело (лічильник) |
Пояснення |
reg (mem) |
1 |
Зсув на один розряд |
reg (mem) |
cl |
Кількість розрядів, що зрушуються, знаходиться в регістрі < CL > = [0..31] |
reg (mem) |
imm8 |
Кількість розрядів, що зсуваються, знаходиться в константі imm8 = [2..31]. Операція визначена, починаючи з i286. |
Як було підкреслено раніше, зсув вліво часто використовується для множення числа на ступінь двійки, а зсув вправо — для ділення на ступінь двійки. Такі операції виконуються значно швидше, ніж звичайні команди множення або ділення. При діленні навпіл непарних чисел результатом стають значення, округлені в меншу сторону. Наприклад, ділення чисел 5 або 7 на 2 дає результат 2 і 3 відповідно, і, крім цього, прапор CF встановлюється в 1. Більш того, при виконанні, наприклад, зсуву на 2 біти більш ефективним є використання двох команд зсуву, а не однієї команди з попереднім завантаженням регістра CL значенням 2. Для перевірки біта переносу (прапора CF) по закінченні операції можна виконати команду jc.
Логіка роботи команд зсув приведена на рисунках 2-9.
Рисунок 2 - Логіка роботи команди арифметичного зсув вліво sal
Рисунок 3 - Логіка роботи команди арифметичного зсув вправо sar
Рисунок 4 - Логіка роботи команди логічного зсув вліво shl
Рисунок 5 - Логіка роботи команди логічного зсув вліво shr
Рисунок 6.- Логіка роботи команди простого циклічного зсув вліво rol
Рисунок 7- Логіка роботи команди простого циклічного зсув вправо ror
Рисунок 8.- Логіка роботи команди циклічного зсув вліво rcl — через біт CF
Рисунок 9.- Логіка роботи команди циклічного зсув вліво rcr — через біт CF