- •Лабораторна робота 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. Уведення з клавіатури
7. Критерії оцінювання.
На 3 бали:
Вміти дати відповіді на питання для самоконтролю та самоперевірки. Виконати приклади та завдання 1.
На 4 бали:
Додатково виконати завдання 2.
На 5 балів:
Додатково виконати завдання 3.
8. Питання для самоперевірки
Чому і коли не бажано використовувати безумовний перехід?
Уміст якого регістру змінюють команди переходів?
Чим відрізняються правила побудови команд переходів для знакових та беззнакових чисел?
Яким чином формується умова для умовних переходів?
Чи можна використовувати команду безумовного переходу у зв’язці із командою порівняння cmp?
Чи можливість виконати перехід у програмі у залежності від умісту окремого прапорця?
Які команди переходів аналізують уміст регістру ecx (cx)?
Як працює команда loop?
Як організувати достроковий вихід із циклу?
Чи можна замінити команди організації циклів більш простішими командами, якими?
9. Література
Голуб Н. Г. Искусство программирования на Ассемблере. Лекции и упражнения.- СПб.: ООО”ДиаСофтЮП”, 2002. – 656 с.
2. Магда. Ю. С. M12 Ассемблер для процессоров Intel Pentium. – СПб.: Питер, 2006. – 410с.
3. Ирвин Кип. Язык ассемблера для процессоров Intel, 4-е издание.: Пер с англ. – М.: Издательский дом ”Вильямс”, 2005. – 912с.
Лабораторна робота 7.
Тема: Обробка масивів даних
Цель: Вивчити способи обробки масивів даних мовою
асемблера.
1. Підготовка до роботи.
Ознайомитися із основними методами обробки одномірних та двомірних масів [1, стор. 206-211], [3, стор. 147-148, 195].
2. Питання для самоконтролю.
Як оголосити масив даних?
Чим відрізняються оголошення та ініціалізація масиву?
Чи можна у програмі на асемблері об’єднати оголошення та ініціалізацію масиву?
Відрізняється чи ні представлення у пам’яті одно- та двовимірних масивів?
Які основні операції виконуються при роботі з масивами?
3. Короткі теоретичні відомості.
Масиви даних - дуже важливий практичний спосіб представлення даних, що дозволяє робити ефективну обробку експериментальних даних, працювати з областями оперативної і постійної пам'яті ЕОМ, дисковими накопичувачами, файлами і т. д.
Дамо формальне визначення: масив - структурований тип даних, що складається з деякого числа елементів одного типу.
З погляду збереження масиву в пам'яті - масив являє собою деяке суміжне число комірок пам'яті.
При роботі з масивами виділяють кілька типових операцій:
оголошення масиву - визначення масиву в рамках мови програмування. У мовах високого рівня для цього можуть бути спеціальні директиви, на зразок array у Паскалі, в асемблері для цих цілей використовуються стандартні директиви визначення даних;
уведення - виведення елементів масиву - істотно залежать від використовуваної мови програмування, операційної системи і т. д;
ініціалізація елементів масиву - присвоєння елементам масиву початкових значень. Як правило, дана операція робиться в циклі;
доступ до елемента масиву - істотно залежить від мови програмування, але можна виділити 2 основних моменти: у кожного елемента масиву обов'язково є значення й індекс (порядок елемента в масиві). Для одержання значення елемента масиву в програмі необхідно вказати ім'я масиву й індекс, наприклад arr [i] - у Паскалі і Сі. В асемблері для цих цілей використовується непряма адресація.
обробка масиву - тут буде доречним використовувати уже відомі алгоритми і прийоми виконання типових задач по обробці масиву - пошук мінімуму - максимуму, сортування, пошук і заміна елементів. Умовно всі задачі обробки масивів можна поділити на 2 групи - обробка значень елементів і робота з індексами масиву.