- •Лабораторна робота 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. Уведення з клавіатури
6. Завдання на лабораторну роботу
При рішенні прикладів і завдань необхідно:
а) скласти алгоритм рішення задачі
б) напроти відповідних елементів алгоритму записати команди асемблера
в) скласти програму (format pe) і відкомпілювати, при необхідності виправити синтаксичні помилки.
г) перевірити виконання програми в дебагері OllyDbg, при наявності помилок виправити текст програми і повторити дії по п. г)
д) змінити заголовок програми для компіляції модуля (format coff), додати відповідні зміни для одержання працездатного модуля для стикування з програмою на C++ (див. лабораторну роботу №2).
е) створити консольний проект на C++, додати отриманий модуль, скомпілювати додаток (див. лабораторну роботу №2).
ж) перевірити правильність роботи програми на різних наборах вхідних даних.
з) оформити звіт і зробити осмислені висновки по суті розв'язуваної задачі.
Індивідуальні завдання
1) виконати приклади 5.1 а 5.2 у FASM та перевірити його роботу у Ollydbg
2) Знайти значення виразу згідно варіанту (варіант обирається за номером списку у журналі групи. Потрібно виконати два приклади: один рахується з початку (тип вихідних даних - байт), інший – з кінця (тип вихідних даних - слово)).
1) (2*с - d + 23) /(а/4 - 1); 2) (с + 4*d - 123)/(1 - а/2);
3) (-2*с + d*82)/(a/4 - 1); 4) (2*с + d - 52)/(а/4 + 1);
5) (с/4 - d*62)/(a*a +1); 6) (-2*с - d + 53)/(а/4 - 1);
7) (2*с - d/4)/(a*a + 1); 8) (2 + с - d*23)/(2*a*a - 1);
9) (2*с - d/3)/(b - а/4); 10) (4*с + d - 1)/(с - а/2);
11) (2*с - d*42)/(c + а - 1); 12) (25/с - d + 2)/(b + а*а-1);
13) (с - d/2 + 33)/(2*а*а-1); 14) (4*с - d/2 + 23)/(а*а - 1);
15) (c*d + 23)/(a/2 -4*d- 1); 16) (c/d + 3*a/2)/(c - а + 1);
17) (2*с + d*51)/(d - а - 1); 18} (2*с + d/4 + 23)/(а*а - 1);
19) (2*с - d/2 + l)/(a*a+7); 20) (2*c/d + 2)/(d - а*а - 1);,
21) (12/с - d*4 +73)/(а*а+1); 22) (2*с/а - d*d)/(d + а - 1);'
23) (-53/а + d -4*a)/(l+a*b); 24) (-15*а + b - a/4)/(b*a -1);
25) (-25/а +c-b*a)/(l+c*b/2); 26) (4*а - 1 + b/2)/(b*c - 5);
27) (8*b+1 - с)/(а/2+ b*c); 28) (4*а - b - l)/(c/b + а);
27) (4*b/c-1)/(12*c+a —b); 30) (b + c*b - a/4)/(a*b - 1);
31) (a+c/b-28)/(4*b*a+l); 32) (c/b - 24 + a)/(2*a*c - 1);
33) (2*b - a + b*c)/(c/4- 1); 34) (41 - d/4 - l)/(c/b + a*d);
35) (a - b*4 - l)/(c/31+a*b); 36) (b/a + 4*c)/(c - b + 1);
37) (21 - a*c/4)/(l+c/a + b); 38) (c - 33 + b/4)/(a*c/b - 1);
39) (2*b - 38*c)/(b+a/c + 1); 40) (c/4 + 28*d)/(a/d - с - 1);
41) (a*b/4 - l)/(41-b*a + c); 42) (1 + 6*a - b/2)/(c + a/d);
43) (a*b + 2*c)/(41-b/c + 1); 44) (4*b - c*a)/(b + c/28 - 1);
45) (2*c + a - 21)/(c/a*b+l); 46) (4/c + 3*a)/(c/a - b - 1);
47) (8*b - 1 - c)/(a*2+ b/c); 48) (4*a/b + l)/(c*b - 18 + a);
49) (4*b/c + l)/(2*c+a*c- b); 50) (b - c/b + a/4)/(a*b - 1);
51) (a - c*b + 28)/(4*b/a+l); 52) (c*b - 24 + a)/(b/2*c - 1);
53) (2*b - a + b/c)/(c/4+ 1); 54) (41*d/4 + l)/(a-c/b + a*d);
55) (a + b/4 - l)/(c/3-a*b); 56) (b*a + c/2)/(4*c - b + 1);
57) (25 + 2*a/c)/(c*a-b - 1); 58) (c + 23 - b*4)/(a*c/b - 1);
59) (b/2-53/c)/(b-a*c + 1); 60) (c*4 + 28/d)/(a*d - с - 1);