- •Лабораторна робота 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.3 Команди сканування бітів
bt, bts, btr і btc оперують з одиничним бітом, що може бути в пам'яті або регістрі загального призначення. Розташування біта визначається як зсув від кінця нижнього регістра операнда. Значення зсуву береться з другого операнда, це може бути або регістр загального призначення, або байт.
Ці інструкції спочатку присвоюють прапорові CF значення обраного байта,
bt більше нічого не робить,
bts присвоює обраному бітові значення 1,
btr скидає його на 0,
btc змінює значення біта на його доповнення, тобто перевіряє біт, зазначений другим операндом, у першому операнді, потім копіює його значення у прапор CF і інвертує. Таким чином, номер біта виступає другим операндом, а першим може служити регістр або комірка пам'яті. Крім того, можна вказати номер біта або безпосередньо, або через регістр.
В усіх інструкціях перший операнд може бути словом або подвійним словом.
Інструкції bsf і bsr шукають у слові або подвійному слові перший установлений біт і зберігають індекс цього біта в операнд-адресат, яким повинний бути регістр загального призначення. Рядок бітів, що сканується, визначається операндом-джерелом, їм може бути або регістр загального призначення, або пам'ять. Якщо рядок нульовий (жодного одиничного біта), то встановлюється прапор ZF, інакше він очищається. Якщо не знайдено жодного встановленого біта, значення операнда адресата не визначено, bsf сканує від нижнього регістра до верхнього (починаючи з біта з індексом нуль), bsr сканує від верхнього регістра до нижнього (починаючи з біта з індексом 15 у слові або з індексу 31 у подвійному слові).
bswap перевертає порядок битов у 32-бітному регістрі загального призначення: біти від 0 до 7 міняються місцями з бітами від 24 до 31, а біти від 8 до 15 міняються з бітами від 16 до 23. Ця інструкція передбачена для перетворення значень із прямим порядком байтів до формату зі зворотним порядком і навпаки.
4. Методичні вказівки з оформлення звіту
Звіт до лабораторної роботи повинен містити:
тему лабораторної роботи;
формулювання мети і задач, що вирішуються в ході виконання роботи;
докладний про хід виконання завдання, із наведенням: алгоритмів, текстів програм, умістом комірок пам’яті та регістрів мікропроцесора, що були отримані у дебагері;
осмислені та аргументовані висновки.
5. Приклади використання бітових команд
and ax, 0x0002 ; перевірка біта №1
or ax, 0x0200 ; установка біта №9
xor ax,0x4000 ; обнуління біта №14
not ax ; логічне not над умістом регістра ax
shl al,1 ; зсув регістра вліво на один біт
shl byte [bx],1 ; зсув пам'яті вліво на один біт
shl ax, cl ; зсув регістра вліво на кількість з cl
shl word [bx], cl ; зсув пам'яті вліво на кількість з cl
shld ax, bx,1 ; зсув регістра вліво на один біт
shld [di], bx,1 ; зсув пам'яті вліво на один біт
shld ax, bx, cl ; зсув регістра вліво на кількість з cl
shld [di], bx, cl ; зсув пам'яті вліво на кількість з cl
bt ax, 15 ; тестує біт у регістрі
bts word [bx],15 ; тестує і ставить біт у пам'яті
btr ax, cx ; тестує і скидає біт у регістрі
btc word [bx], cx ; тестує і доповнює біт у пам'яті
bsf ax, bx ; сканування регістра по зростанню
bsr ax,[si] ; сканування пам'яті в зворотному порядку
bswap edx ; перестановка байтів у регістрі