You are on page 1of 41

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

СИСТЕМНЕ ПРОГРАМУВАННЯ

Методичні вказівки до лабораторних занять


для здобувачів першого (бакалаврського) рівня вищої освіти
освітньо-професійної програми «Комп’ютерна інженерія»
галузь знань 12 Інформаційні технології
спеціальності 123 Комп’ютерна інженерія
денної та заочної форм навчання

ЛУЦЬК 2020
УДК 004.422.632/004.422.632.4(07)
С74
До друку
Голова навчально-методичної ради Луцького НТУ О.М. Ляшенко

Електронна копія друкованого видання передана для внесення в репозитарій Луцького НТУ

Директор бібліотеки С.С. Бакуменко

Затверджено навчально-методичною радою Луцького НТУ,


протокол № від « » 20 20 року.

Рекомендовано до видання вченою радою факультету комп'ютерних наук та інформаційних


технологій Луцького НТУ,

протокол № від « » 20 20 року.

Голова вченої ради факультету КНІТ Р.Г. Редько

Розглянуто і схвалено на засіданні кафедри комп’ютерної інженерії та кібербезпеки


Луцького НТУ, протокол № 11 від « 17 » 06 20 20 року.

Завідувач кафедри КІ та КБ П.А. Пех

Укладачі: О.К. Каганюк, кандидат технічних наук, доцент


комп’ютерної інженерії та кібербезпеки Луцького НТУ

С.В. Гринюк, асистент


кафедри комп’ютерної інженерії та кібербезпеки Луцького НТУ

Рецензент: С.В. Лавренчук, кандидат технічних наук, доцент


кафедри комп’ютерної інженерії та кібербезпеки Луцького НТУ

Відповідальний за випуск: П.А. Пех, кандидат технічних


наук, доцент кафедри комп’ютерної інженерії та кібербезпеки Луцького НТУ

Системне програмування [Текст]: методичні вказівки до лабораторних занять для


здобувачів першого (бакалаврського) рівня вищої освіти освітньо-професійної програми
С-74 «Комп’ютерна інженерія» галузь знань 12 Інформаційні технології спеціальності 123
Комп’ютерна інженерія денної та заочної форм навчання / уклад. О.К. Каганюк, С.В.
Гринюк. – Луцьк : Луцький НТУ, 2020. – 40 с.

Методичні вказівки складено відповідно до робочої програми дисципліни «Системне


програмування» з метою використання студентами технічних спеціальностей при вивченні даної
дисципліни.

2
© О.К. Каганюк, С.В. Гринюк 2020

ЗМІСТ

Лабораторна робота № 1 Знайомство з пакетом програм MASM32......................................................4

Лабораторна робота № 2-4 Лінійні обчислення виразів мовою програмування Асемблер.................7

Лабораторна робота № 5-6 Розгалужений обчислювальний процес в мові програмування Асемблер


.......................................................................................................................................................................9

Лабораторна робота № 7 Логічні команди..............................................................................................12

Лабораторна робота № 8 Циклічний процес в мові програмування Асемблер...................................13

Лабораторна робота № 9 Арифметичні операції над цілими числами у вбудованому у C++


Асемблері....................................................................................................................................................14

Лабораторна робота № 10-11 Арифметичні операції над дійсними числами у вбудованому у C++
Асемблері....................................................................................................................................................15

Лабораторна робота № 12 Тема: Циклічний процес у вбудованому у C++ Асемблер.......................16

Лабораторна робота № 15 Структури......................................................................................................21

Лабораторна робота № 16 Введення-виведення в Win32......................................................................23

Лабораторна робота № 17-18 Файли. Динамічна бібліотека.................................................................26

Лабораторна робота № 21-22 Графічні примітиви.................................................................................31

Лабораторна робота № 23-24 Дочірнє вікно...........................................................................................32

Лабораторна робота № 25-27 Обробка повідомлень..............................................................................33

Лабораторна робота № 28-29 Процес......................................................................................................35

Лабораторна робота № 30 Пам’ять..........................................................................................................37

Список використаних джерел...................................................................................................................37

ДОДАТКИ..................................................................................................................................................38

3
Лабораторна робота № 1
Тема: Знайомство з пакетом програм MASM32
Мета: навчитися використовувати пакет MASM32, а також вивчити типову структуру вихідного
тексту простої програми Win32 на мові асемблера.

Хід роботи
1. Інсталювати програмний пакет MASM32.
2. Створити проект. Написати вихідний текст програми на асемблері.
3. Скомпілювати вихідний текст і отримати виконуємий файл програми.
4. Перевірити роботу програми.
5. Внести зміни у вихідний текст згідно завданню, перевірити результат.
6. Знайти відомості у довідці MASM32 для відповідей на контрольні питання.
Порядок виконання роботи та методичні рекомендації
1. Інсталяція пакету MASM32 та підготовка до роботи. Спочатку необхідно інсталювати пакет
MASM32. Цей пакет являє собою програмне забезпечення, яке є вільним (freeware) для
розповсюдження та використання, у тому числі для навчальних цілей. Знайти інсталяційні файли
можна у мережі Інтернет за електронною адресою http://www.masm32.com.
Після завантаження потрібних файлів перевірте їх на відсутність комп’ютерних вірусів. Потім
запустіть на виконання файл install.exe. Дочекайтеся повідомлення про успішне завершення
інсталяції MASM32. Після завершення інсталяції на жорсткому диску комп’ютера буде записано
множину різноманітних файлів – у тому числі виконуємі файли програм. Увага! Перед тим, як
щось робити з отриманими файлами, обов’язково знову перевірте усі файли на відсутність
комп’ютерних вірусів. Порада: у папках \masm32\examples\ вилучіть з жорсткого диску усі файли
*.exe скомпільованих прикладів (попередньо записавши їхні імена – ці імена буде корисно знати
для подальшого вивчення пакету MASM32).
2. Створення проекту у середовищі MASM32. У розділі (локальному диску), де міститься
інстальований MASM32, cтворіть робочу папку вашої програми. Наприклад, якщо MASM32
розташовується у E:\masm32, то створіть робочу папку, наприклад, E:\work\lab1. Потім викличте
програму MASM32 Quick Editor (виконуємий файл \masm32\qeditor.exe). Введіть текст
найпростішої програми для Windows. Потім запишіть цей текст у файл типу *.asm у робочу папку
на локальному диску – наприклад, як E:\work\lab1\lab1.asm. Зробити це можна через меню "File -
Save As".
У такий спосіб створюються файли вихідного тексту. Дана програма містить лише один
файл вихідного тексту. Складніші програми можуть містити декілька файлів у робочій папці
проекту.

4
Рис. 1. Вихідний текст у вікні MASM32 Quick Editor

3. Компіляція та створення виконуємого файлу програми. Виберіть меню "Project - Assemble ASM
File". Якщо компілятор не знайде помилок, то у робочу папку буде записаний файл lab1.obj.
Наступним кроком буде лінкування. Виберіть меню "Project – Link OBJ File". У разі відсутності
помилок лінкер запише виконуємий файл програми lab1.exe. Необхідно вказати, що компіляцію та
лінкування можно об’єднати – виконати за один раз вибором меню "Project – Аssemble & Link".
Проте і у цьому випадку послідовність обробки вихідного тексту буде тою самою – спочатку
компіляція, потім лінкування. Інформація про виконання цієї роботи буде відображатися у вікні
командного рядка

Рис. 2. Інформація про виконання компіляції та лінкування

Таким чином, у робочій папці з’явився виконуємий файл lab1.exe.


5
4. Перевірка роботи програми.
Щоб перевірити, як працює новостворена програма lab1.exe, її можна викликати засобами
операційної системи, або безпосередньо у середовищі MASM32 Editor. Для цього виберіть меню
"Project – Run Program".

Рис. 3. Виклик програми на виконання

Наша перша програма на асемблері виводить текст вітання у діалоговому вікні.


5. Редагування вихідного тексту програми.
Потрібно змінити, відредагувати вихідний текст програми згідно варіанту завдання. Це
виконується у програмі MASM32 Quick Editor. Для вирішення завдання необхідно відповідно
оформити потрібний текст директивою DB у секції .DATA. Студент повинен самостійно
розібратися у питанні, як можна записувати текст з декількох рядків у діалоговому вікні. Порада:
для цього слід використовувати пари символів з кодами 13 та 10 у якості роздільників рядків.
Варіанти завдання
Варіант завдання – це прізвище, ім’я та по-батькові студента (П.І.Б.).
Необхідно запрограмувати, щоб разом із попереднім текстом вітання у цьому ж діалоговому вікні
програми виводилася б інформація (П.І.Б.) про студента як автора програми.
Зміст звіту
1. Титульний лист
2. Завдання
3. Роздруківка тексту програми
4. Роздруківка результатів виконання програми
5. Аналіз результатів
6. Висновки

6
Лабораторна робота № 2-4
Тема: Лінійні обчислення виразів мовою програмування Асемблер
Мета: : набути практичних навичок складання, налагодження і виконання програм, написаних
мовою асемблера для програмування арифметичних виразів для МП платформи х86.

Хід роботи
Завдання 1. Згідно з номером у групі вибрати варіант та написати на асемблері програму
обчислення одного з виразів:
1. a + ab – e/c; 16. (a + 24b) – d/c;
2. (a + 2d) – d/b; 17. a + 25db – e/b;
3. c + 3ad – e/b; 18. (b + 26de)/(a – b)
4. (a + 4e)b – d/b; 19. ae + 7b – d/c;
5. a + 5de – e/b; 20. (ab + 8d)/(b – d);
6. (b + 6de)/(a – с); 21. (de + 9e)/(c – a);
7. a + 11de – e/b; 22. (a + 10e)b/(a + c),
8. (b + 12de)/(a – с); 23. a + 17ab – d/b;
9. ae + 13b – d/c 24. (a + 18e) + d/a;
10. (ab + 14d)/(b – d); 25. c + 19bd – d/b;
11. (de +15d)/(c + a); 26. (a + 20e)a – d/b;
12. (a + 16e)b/(e – c); 27. ae + 27b – d/a;
13. (de + 21e)/(c – a); 28. (ab + 28d)/(b – a);
14. (a + 22e)b/(a + c); 29. (de + 29a)/(c – a);
15. a + 23ac – e/b; 30. (a + 30d)e/(a – c);
Завдання 2. Згідно з номером студента в групі вибрати варіант завдання та написати на асемблері
програму обчислення одного з виразів:

Завдання 3. Згідно з номером у групі вибрати варіант та написати на асемблері програму


обчислення одного з виразів:
1) a = 150 / (7 * x^2) - 190 / (11 * x^2)
2) y = b - (c-2)/d + (5*d)^2
3) a = (x^2 + y^2) / (x^2 - y^2)
4) m = a/b + c/d^2 + e/f^3
5) y = (x-t) * (x-a) * (x-z)
6) a = (b1-b2) * (2*d1-3*d2)
7) t = (x*r-1) * (x*p-1) * (x*d-1) - (a+1) * (d+1)
8) a = (m*p – y)/(b^2+2)
9) t = 20/x^3 + 20/y^3 + 20/z^3
10) b = (a-d) / (m^2 - m - 1)
11) t = (1+x^2) / (1+y^2) - (a+b+1) / (2*a-1)
12) t = (1+x^2) / (1+y^2) - (a+b+1) / (2*a-1)
13) a = (3*x + y^2) / (4*x - y^2)
14) c = 91/x + 320/x^2 + 1300/x^3 + 1400/x^4
15) с = (a-d^2) * (k^2 - m - 1)
7
16) a = (b1^2+b2) / (2*d1-3*d2)
17) t = (x+r^2-1) * (x+p^3-1) * (x+d^3-1) - (a+1) * (d+1)
18) y = b^3 - (c+2)/d^2 + (5/d)^2
19) t = 10*x^3 + 10*y^3 + 10*z^3
де a – № в списку;
b – № навчальної групи;
c – рр – дві останні цифри року народження;
е – рррр – чотири цифри року народження;
d – ддмм:
дд – день народження;
мм – місяць народження.
Результат обчислення виразу зберегти в пам’яті. Навести значення та порядок розміщення
даних у пам’яті.
Треба пам’ятати, що при виконанні операції ділення в регістрі EDX зберігається не дрібна
частина результату, а залишок від цілочислового ділення, що не є таким самим.
Зміст звіту
1. Титульний лист
2. Завдання
3. Роздруківка тексту програми
4. Роздруківка результатів виконання програми
5. Аналіз результатів

8
Лабораторна робота № 5-6
Тема: Розгалужений обчислювальний процес в мові програмування Асемблер
Мета: набути практичних навичок складання, налагодження і виконання програм з використанням
команд умовного та безумовного переходу, які написані мовою асемблера для МП платформи х86.

Хід роботи
Завдання 1. Написати на асемблері програму для знаходження значення складної функції з
використанням команд розгалуження згідно варіанту.

1.
f=¿ {3 к−d,d>5¿¿¿¿ 15.
d=¿ {( f−3)g,f≤4¿¿¿¿

2.
f=¿ {d−k d
,s= ¿ ¿¿¿
2 2 16.
{ f k
p=¿ 3 b− ,d> ¿ ¿¿¿
2 2

s=¿ {r− ,r≠3 ¿ ¿¿¿ k=¿{s−2t , g>5¿¿¿¿


d
3.
4 17.

4.
x=¿ {r−2c,d>7¿¿¿¿ 18.
b=¿ {t −2n,n>2¿¿¿¿

5.
d=¿ {f −4к,f >3¿¿¿¿ 19.
y=¿ {5o+f,o−5=0¿¿¿¿
6.
d=¿ {f −3g,f>7¿¿¿¿ 20.
w=¿ {b−6c,g−3>0¿¿¿¿

7.
f
4 {
n=¿ −1,f−2<0 ¿ ¿¿¿
21.
x=¿ {2 r+c,3d>6¿¿¿¿

8.
y=¿ {f +5o,o=8¿¿¿¿ 22.
h=¿{5 к−a,a−k>9¿¿¿¿

9
9.
{ 6
g=¿ a−t,k< ¿ ¿¿¿
2 23.
h=¿{8a−5к,a+2>9¿¿¿¿

d=¿ {a−4y,g>2¿¿¿¿ 24.


y=¿ { 3 p+o
4
, p≠6 ¿ ¿¿¿
10.

{ {
h−s r
k=¿ ,s>7 ¿ ¿¿¿ s=¿ d− ,r≠1 ¿ ¿¿¿
2
11.
25.
2

h=¿{a+5к,a>2¿¿¿¿ f=¿ { ,s= ¿ ¿¿¿


3d−k 15
12.
26.
4 3

13.
{
f 18
p=¿ b+ ,d> ¿ ¿¿¿
2 2 27.
x=¿ {2 c−r,d>5¿¿¿¿

14.
y=¿ { o+p
4
, p≠2 ¿ ¿¿¿
28.
y=¿ { a+b
4
,p≠7 ¿ ¿¿¿

Завдання 2. Використовуючи мову асемблера, обчислити заданий цілочисельний вираз. Змінні


вважати цілочисельними знаковими. Розрядність регістрів та даних може бути довільною - 8,16
або 32 біти.

10
Зміст звіту
1. Титульний лист
2. Роздруківка тексту програми
3. Роздруківка результатів виконання програми
11
Лабораторна робота № 7
Тема: Логічні команди
Мета: набути навичок використання логічних команд при програмуванні на мові асемблер.

Хід роботи
Завдання 1. Написати програму на асемблері для обчислення значення виразу за допомогою
логічних команд згідно варіанту.
№ Вираз для обчислення Значення a/b/c Значення a/b/c
1. c-a x b-2+2(1+c) 0x01112222 /0x1222 /0x13 0x21 /0xFFFFFF0414 /0xF10601414
2. (2a x 1)+10b+c+10-(b-a) 0x13338888 /0x0888 /0x14 0x22 /0x0989FFFFF /0xFF00508989
3. 3 x (1+a+(b-3c))-1 0x05 /0x2020 /0x10102020 0x23 /0xFFFFFF0279 /0xF15685279
4. 2 x a-1+(((c-2b)+2c)+2) 0x16 /0x1555 /0x04445555 0x24 /0x1565FFFFFF /0xF02324565
5. 3 x (c-a-3b+1)+3c-1 0x17 /0x0999 /0x17779999 0x25 /0xFFFFF0569 /0xFF12324569
6. c-2 x a-4b+(6c+8)-1 0x18 /0x1333 /0x01223333 0x26 /0xFFFFF1666 /0xFF08985666
7. 3*(a x b-159+c)+1-c 0x06864444 /0x1444 /0x19 0x27 /0xFFFFF1032 /0xFF10205032
8. c+2 x a+(3b-c-1)+8-b 0x20 /0x1424 /0x00802424 0x28 /0x0117FFFFF /0x11518117FF
9. (7a-b+(c-1))x99-a 0x21 /0x0414 /0x10601414 0x29 /0xFFFFF1819 /0x08986819FF
10. 3 x (a+b-1)-8c+1 0x22 /0x0989 /0x00508989 0x30 /0xFFFFF0826 /0x0404826FF
11. 7a-6b+2 x (5c+1)-3 0x23 /0x0279 /0x15685279 0x0777 /0x31FFFFF /0xFF12317777
12. 2 x (2b-2a-2)+2c+2 0x24 /0x1565 /0x02324565 0x32 /0xFFFFF0522 /0xFF15458522
13. (a+1)-27 x b+(c-1) 0x25 /0x0569 /0x12324569 0x33 /0xFFFFF1523 /0xFF05359523
14. (a x b+с+1)+2-2(c+ а-1) 0x26 /0x1666 /0x08985666 0x34 /0xFFFFF0524 /0x15957524FF
15. a-3 x b+2(c+2)-1 0x27 /0x1032 /0x10205032 0x1234 /0x12FFFFF /0xFF06781234
16. 2c-a-(b x c-1)+2+5b 0x28 /0x0117 /0x11518117 0x36 /0xFFFFF0326 /0x14627326FF
17. c-2(a-b+c-1)+1 x 5 0x29 /0x1819 /0x08986819 0x37 /0xFFFFF0627 /0x09734627FF
18. 3(2a-b+c-5)+1 0x30 /0x0826 /0x0404826 0x38 /0xFFFFF0628 /0xFF14226628
19. a+((b x c)+a-(c+b)-1)+5 0x0777 /0x31 /0x12317777 0x39 /0xFFFFF1329 /0x07993329FF
20. 2(a-b x c-1+(5-a))+1 0x32 /0x0522 /0x15458522 0x40 /0x1830FFFFF /0xFF01338830
21. 2(a+b-c)+ 2(1-a x b+c)-1 0x33 /0x1523 /0x05359523 0x41 /0x0431FFFFF /0x16621431FF
22. 2(a-2b+1) x (6+a-b+c-1) 0x34 /0x0524 /0x15957524 0x42 /0x1232FFFFF /0xFF08863232
23. (2a-1) x b-(2c+1) 0x1234 /0x12 /0x06781234 0x11 /0x5678FFFFF /0xFF12345678
24. 21a-(b+c-1)+16 x b+1 0x36 /0x0326 /0x14627326 0x35 /0xFFFFF0325 /0xFF06482325
25. 2 x a-2(b+c-3)+1 0x37 /0x0627 /0x09734627 0xAA01112222/0x1222FFFFF/0x13
26. a-(8b-1)+c x 12 0x38 /0x0628 /0x14226628 0xFF13338888 /0xFFFFF0888 /0x14
27. 10a-(b x c-1)+5 0x39 /0x1329 /0x07993329 0x05 /0xFFFFF2020 /0xFF10102020
28. 2(a-6 x b+1)+c-1 0x40 /0x1830 /0x01338830 0x16 /0x1555FFFFF /0xFF04445555
29. 4(a-b+c-1)+3 0x41 /0x0431 /0x16621431 0x17 /0x0999FFFFF /0xFF17779999
30. b-2 x a+2(b-c+1) 0x42 /0x1232 /0x08863232 0x18 /0xFFFFF1333 /0xFF01223333
31. 5a-3 x b+2+(c-1) 0x11 /0x5678 /0x12345678 0xF06864444 /0xFFFFFF1444 /0x19
32. 4(a-b-1)+3 x c+1 0x35 /0x0325 /0x06482325 0x20 /0x1424FFFFFF /0xF00802424

Зміст звіту
1. Титульний лист
2. Завдання
3. Роздруківка тексту програми
4. Роздруківка результатів виконання програми
5. Аналіз результатів

12
Лабораторна робота № 8
Тема: Циклічний процес в мові програмування Асемблер
Мета: набути практичних навичок складання, налагодження і виконання програм з використанням
циклу loop, написаних мовою асемблера для МП платформи х86.

Хід роботи
Завдання 1. Згідно номера студента в групі вибрати свій варіант та написати на асемблері
програму з використанням циклу loop та безумовного переходу з обов’язковим виведенням
результатів у спрощене вікно (вікна) та додати прізвище та ініціали про автора програми та
варіант завдання та умову цього завдання.

1. Обчислити суму 6 значень функції Yn = 25х3 – 2.


2. Обчислити суму 5 значень функції Yn = 7x3(2x2 + 1).
3. Обчислити суму 4 значення функції Yn = 37(2x2 + 7).
4. Обчислити суму 5 значень функції Yn = 51x2 + 5.
5. Обчислити суму 6 значень функції Yn = 4x(x + 5).
6. Обчислити суму 4 значення функції: Yn = 25(3х2 – 1).
7. Обчислити суму 4 значення функції Yn = 25x2 – 3,2.
8. Обчислити суму 5 значення функції Yn = 25х2 + 21.
9. Обчислити суму 4 значення функції Yn = 15(x2 – 7).
10. Обчислити суму 6 значень функції Yn = 6(3x2 + 31).
11. Обчислити суму 4 значення функції Y = 51(2x2 + 1).
12. Обчислити суму 5 значень функції Y = 43(x2 + 1).
13. Обчислити суму 7 значень функції Y = 31 + 2x3.
14. Обчислити суму 6 значень функції Yn = 25х3 – 21.
15. Обчислити суму 5 значень функції Yn = x(2x4 + 17).
16. Обчислити суму 4 значення функції Yn = 37х(2x2 + 73).
17. Обчислити суму 5 значень функції Yn = 51x2 + 53х.
18. Обчислити суму 6 значень функції Yn = 4x3(x + 5)
19. Обчислити суму 4 значення функції: Yn = 15х(3х2 – 11).
20. Обчислити суму 4 значення функції Yn = 25x2 – 32.
21. Обчислити суму 5 значення функції Yn = 25х2 + 21.
22. Обчислити суму 4 значення функції Yn = 15(x2 – 7).
23. Обчислити суму 6 значень функції Yn = 25(3x2 + 31).
24. Обчислити суму 4 значення функції Y = 51(x2+3).
25. Обчислити суму 5 значень функції Y = 43(x2 + 1).
26. Обчислити суму 7 значень функції Y = 31 + 2x2.
27. Обчислити суму 5 значення функції Y = 51x2+3х+5.
28. Обчислити суму 6 значення функції Y = 5x2+6х-2.

Зміст звіту
1. Титульний лист
2. Завдання
3. Роздруківка тексту програми
4. Роздруківка результатів виконання програми
5. Аналіз результатів

13
Лабораторна робота № 9
Тема: Арифметичні операції над цілими числами у вбудованому у C++ Асемблері
Мета: вивчення арифметичних команд мови асемблер.

Хід роботи
Завдання 1. Написати програму на С++ для введення вхідних даних і розв'язання засобами
вбудуваного асемблера згідно свого варіанту.

Зміст звіту
1. Титульний лист
2. Завдання
3. Роздруківка тексту програми
4. Роздруківка результатів виконання програми
5. Аналіз результатів

14
Лабораторна робота № 10-11
Тема: Арифметичні операції над дійсними числами у вбудованому у C++ Асемблері
Мета: вивчення арифметичних команд мови асемблер опрацювання дійсних чисел.

Хід роботи
Завдання 1. Написати програму на С++ для введення вхідних даних і розв'язання засобами
вбудуваного асемблера згідно свого варіанту.

Зміст звіту
1. Титульний лист
2. Завдання
3. Роздруківка тексту програми
4. Роздруківка результатів виконання програми
5. Аналіз результатів

15
Лабораторна робота № 12
Тема: Циклічний процес у вбудованому у C++ Асемблер
Мета: вивчення циклічного процесу мови асемблер.

Хід роботи
Завдання 1. Написати програму на С++ для введення вхідних даних і розв'язання засобами
вбудуваного асемблера згідно свого варіанту.
Значення
№ Сума членів ряду Кількість членів ряду
x
( 2 x )2 ( 2 x ) 4 n (2 x )
2n
1 s=− + −. ..+ (−1 ) +. .. 0,20 8
2 24 (2 x ) !
3 2n−1
x n x
2 s=x− +.. .+ (−1 ) +.. . 0,10 5
3 2 n−1
3 5 2 n+1
x x n+1 x
3 s= − + .. .+ (−1 ) +. .. 0,15 6
5 17 4 n2 + 1
π π
4 s=1+cos ⋅x+. . .+ cos n ⋅x n +. . . 0,12 5
4 4
2 4 2n
x x x
5 s= + + .. .+ +.. . 0,70 7
2 4 (2 n)
6 (
1 1
s=4 1− + −. ..+ (−1 )n
3 5
1
2 n−1
+. .. ) 0,8 5

1 1 1 1
7 atrctg x≡s= − 3 + 5 −.. . (−1 )n +.. . 1,5 6
x 3 x 5x ( 2 n+1 ) x 2n+1
2 4 2n
x x x
8 cos x≡s=1− + −.. .+ (−1 )n +. .. 0,5 5
2 4 (2 n)
3 5 2n+1
x x x
9 s=x + − +. ..+ +. . . 1,7 8
3 5 ( 2 n+1 )
3 5 2 n+1
x x n x
10 sin x≡s=x− + −. ..+ (−1 ) +. . . 0,5 7
3 5 ( 2 n+1 )
2 4
x 3x n 2 n−1 2 n
11 s=1+ − +.. .+ (−1 ) x +. .. 0,75 5
2 4 (2 n )
2 3 n
12 s= sin 2 x− sin 3 x +.. .+ (−1 )n 2 sin nx +.. . 0,62 5
3 8 n −1
cos x cos2 x cosnx
13 s=1+ + +. ..+ +.. . 0,20 4
1 2 n
3 5 2 n+1
x x n+1 x
14 s= − +. . .+ (−1 ) +. . . 0,30 6
3 15 4 n2 −1
2 n
π x π x π x
15 s=cos ⋅ +cos 2 ⋅ +. ..+cos n ⋅ +. .. 0,25 4
3 1 3 2 3 n
sin x sin 2 x sin nx
16 s= + +.. .+ +.. . 0,4 5
3 5 (2 n+1)
3
3x 5x n 2n+1 2n−1
17 s= − +.. .+ (−1 ) x +.. . 0,2 4
1 2 ( n)
sin( x ) sin(2 x ) sin(nx )
18 s=− + −. . .+ (−1 )n +.. . 0,3 5
2 24 (2 x )

16
Значення
№ Сума членів ряду Кількість членів ряду
x

19
π x
4 1
π xn
s=1+tg ⋅ +.. .+tg n ⋅ +. ..
4 n ( ) 0,4 4

4 2n
20 s=−cos x+ cos 2 x +. ..+ (−1 )n cosnx +.. . 0,5 5
5 3 n−1

( )
n
π x π x
21 s=1+tg ⋅ +. ..+tg n ⋅ +.. . 0,3 4
4 1! 4 n!
22 (
4 4
s=3 4− + −. ..+ (−1 )n
3 5
4
2 n−1
+. .. ) 0,4 5

4 2n
23 s=−cos x+ cos 2 x +. ..+ (−1 )n cosnx +.. . 0,2 4
5 3 n−1
1 1 1 1
24 s=1− + − +.. .+(−1 )n+1 +.. . 0,3 7
2 3 4 n
sin x sin 2 x sin 3 x sin nx
25 s=| |+| |+| |+.. .+| 2 |+. .. 0,7 5
1 4 9 n
4 4 4
sin 2 x sin3 x sin n x
26 s=sin x + 2
+ 2
+. ..+ +. .. 0,4 4
2 3 n2
π π π
cos x cos 3 x cos (2n−1) x
27 4 4 4 0,5 5
s= + +.. .+ +. . .
3 32
3n

sin x sin(2 x ) sin(nx )


28 s= − +.. .+ (−1 )n+1 2 +. . . 0,4 4
2 5 n +1
2 x sin( x ) 3 x sin(2 x ) (n+1)x sin(nx )
29 s= + +. ..+ +. .. 0,2 6
1! 2! n!
x x2 x 3 xn
30 e ≡1+ x+ + +. ..+ +. .. 0,3 4
2! 3! n!

Зміст звіту
1. Титульний лист
2. Завдання
3. Роздруківка тексту програми
4. Роздруківка результатів виконання програми
5. Аналіз результатів

17
Лабораторна робота № 13-14
Тема: Масиви
Мета: вивчення асемблерних умовних і циклічних команд та набуття навичок опрацювання
масивів цілих чисел засобами вбудованого в C++ асемблера.

Хід роботи
Завдання 1. Написати програму на С++ для введення вхідних даних і розв'язання засобами
вбудуваного асемблера згідно свого варіанту.
№ Розмір
Індивідуальне завдання
вар. масиву
1 15 Обчислити суму від‟ємних елементів масиву
2 10 Обчислити кількість додатних елементів масиву
3 8 Обчислити факторіал значення останнього елемента масиву
4 12 Обчислити добуток елементів, значення яких є менше за 6
5 14 Обчислити суму непарних елементів масиву
6 18 Обчислити суму елементів, абсолютне значення яких не перевищує 5
7 11 Обчислити кількість від‟ємних елементів масиву
8 14 Обчислити факторіал значення третього елемента масиву
9 16 Знайти індекс мінімального елемента
10 14 Обчислити кількість елементів масиву, значення яких є більше за значення
першого елемента
11 17 Обчислити суму мінімального й максимального елементів масиву
12 9 Обчислити суму елементів, значення яких перебувають у діапазоні [3, 6]

13 15 Знайти максимальний елемент масиву


14 10 Обчислити добуток непарних елементів масиву
15 8 Обчислити суму мінімального елемента масиву та його індексу
16 12 Обчислити різницю поміж мінімальним і максимальним елемента- ми масиву
17 20 Обчислити кількість парних елементів масиву
18 18 Обчислити суму квадратів тих чисел, модуль яких не перевищує 3
19 11 Обчислити факторіал значення сьомого елемента масиву
20 9 Обчислити добуток від‟ємних елементів масиву
21 16 Обчислити суму мінімального елемента масиву та його індексу
22 19 Обчислити кількість додатних та від‟ємних елементів масиву
23 17 Обчислити добуток елементів, значення яких перебувають в діапа- зоні [2, 5]
24 8 Обчислити суму елементів, значення яких є менше за значення першого
елемента масиву
25 7 Обчислити добуток ненульових елементів масиву
26 18 Обчислити суму додатних елементів, значення яких не перевищує 4
27 11 Обчислити добуток мінімального й максимального елементів масиву
28 10 Обчислити суму модулів усіх від‟ємних елементів масиву
29 12 Обчислити різницю поміж максимальним та мінімальним елемен- тами
масиву
30 9 Обчислити добуток елементів, значення яких є менше за значення
останнього елемента масиву
18
Завдання 2. Згідно номера студента в групі вибрати свій варіант та написати на асемблері
програму з використанням директив умовного асемблювання та дійсних чисел з обов’язковим
виведенням результатів у спрощене вікно (вікна).

1. Знайти кількість додатніх елементів в масиві А[N, M]. Вивести на друк сам масив і
результат. Зобразити блок-схему.
2. Знайти добуток елементів масиву А[N, M]. Вивести на друк сам масив і результат.
Зобразити блок-схему.
3. Знайти кількість від’ємних елементів в масиві А[N, M]Вивести на друк сам масив і
результат. Зобразити блок-схему.
4. Знайти добуток від’ємних елементів масиву А[N, M]. Вивести на друк сам масив і
результат. Зобразити блок-схему.
5. Знайти суму додатніх елементів масиву А[N, M]. Вивести на друк сам масив і результат.
Зобразити блок-схему.
6. Знайти добуток всіх додатних елементів масиву А[N, M]. Вивести на друк сам масив і
результат. Зобразити блок-схему.
7. Знайти суму елементів масиву А[N, M]. Вивести на друк сам масив і результат. Зобразити
блок-схему.
8. Знайти суму від’ємних елементів масиву А[N, M]. Вивести на друк сам масив і результат.
Зобразити блок-схему.
9. Знайти суму елементів, кратних 5, в масиві А[N, M]. Вивести на друк сам масив і результат.
Зобразити блок-схему.
10. Знайти добуток елементів головної діагоналі матриці А[N, N]. Вивести на друк сам масив і
результат. Зобразити блок-схему.
11. Знайти суму елементів головної діагоналі матриці А[N, N]. Вивести на друк сам масив і
результат. Зобразити блок-схему.
12. Знайти добуток елементів бічної діагоналі матриці А[N, N]. Вивести на друк сам масив і
результат. Зобразити блок-схему.
13. Знайти суму елементів бічної діагоналі матриці А[N, N]. Вивести на друк сам масив і
результат. Зобразити блок-схему.
14. Знайти максимальний елемент в матриці А[N, M]. Вивести на друк сам масив і результат.
Зобразити блок-схему.
15. Знайти мінімальний елемент в матриці А[N, M]. Вивести на друк сам масив і результат.
Зобразити блок-схему.
16. Знайти суму елементів кожного стовпця матриці А[N, M]. Вивести на друк сам масив і
результат. Зобразити блок-схему.
17. Знайти кількість елементів, кратних 4, в масиві А[N, M]. Вивести на друк сам масив і
результат. Зобразити блок-схему.
18. Знайти суму елементів кожного рядка матриці А[N, M]. Вивести на друк сам масив і
результат. Зобразити блок-схему.
19. Знайти добуток елементів кожного стовпця матриці А[N, M]. Вивести на друк сам масив і
результат. Зобразити блок-схему.
20. Знайти добуток елементів кожного рядка матриці А[N, M]. Вивести на друк сам масив і
результат. Зобразити блок-схему.
21. Знайти добуток додатніх елементів головної діагоналі матриці А[N, N]. Вивести на друк
сам масив і результат. Зобразити блок-схему.
22. Знайти індекси мінімального елемента матриці А[N, M]. Вивести на друк сам масив і
результат. Зобразити блок-схему.
23. Знайти суму елементів, кратних 3, в масиві А[N, M]. Вивести на друк сам масив і результат.
Зобразити блок-схему.
24. Знайти кількість від’ємних елементів, що лежать на головній діагоналі в масиві А[N, N].
Вивести на друк сам масив і результат. Зобразити блок-схему.
19
25. Знайти добуток від’ємних елементів бічної діагоналі матриці А[N, N]. Вивести на друк сам
масив і результат. Зобразити блок-схему.

Зміст звіту
1. Титульний лист
2. Завдання
3. Роздруківка тексту програми
4. Роздруківка результатів виконання програми
5. Аналіз результатів

20
Лабораторна робота № 15
Тема: Структури
Мета: набути практичних навичок складання, налагодження і виконання програм з
використанням структур та АРІ-функцій під Win32, написаних мовою асемблер МП
платформи х86.

Хід роботи
Завдання 1. Згідно номера студента в групі вибрати свій варіант та написати на асемблері
програму з використанням директив умовного асемблювання та дійсних чисел з обов’язковим
виведенням результатів у спрощене вікно (вікна).
1. Задано послідовність структур. Структура містить поля: назва автомобіля, порядковий номер,
ім’я власника, кількість порушень. Обчислити кількість власників, у яких більше трьох порушень.
2. Задано послідовність структур. Структура містить поля: ім’я студента, стипендія, середня
оцінка, вік. Обчислити середній вік студентів.
3. Задано послідовність структур. Структура містить поля кредитної картки: номер, прізвище
власника, розмір грошової суми і ступінь захисту. Обчислити кількість кредитних карток з
грошовою сумою більше $300 і ступенем захисту більше 10.
4. Задано послідовність структур. Структура містить поля (відповідно до комп’ютера): серійний
номер, ціна, назва, прізвище власника, розмір монітора в дюймах. Обчислити середню ціну 26-
дюймових моніторів.
5. Задано послідовність структур. Структура містить поля за характеристиками студентських груп:
назва групи, успішність (середня цілочислова оцінка), номер курсу. Вивести на екран назву групи
з максимальною успішністю.
6. Задано послідовність структур. Структура містить поля з торгової діяльності комп’ютерної
фірми: назва товару (комп’ютер, модем, гвинт), ціна (у доларах), кількість проданих одиниць.
Обчислити прибуток фірми (підсумовування “кількості проданих одиниць помножену на ціну”).
7. Задано послідовність структур. Структура містить поля з торгової діяльності комп’ютерної
фірми: назва товару (комп’ютер, модем, гвинт), ціна, кількість проданих одиниць. Обчислити
прибуток по кожному товару (прибуток = кількість проданих одиниць, помножена на ціну).
8. Задано послідовність структур. Структура містить поля з зарплати викладачів: прізвище
викладача, назва курсу (який веде викладач), посада, зарплата. Обчислити прізвище самого
низькооплачуваного викладача.
9. Задано послідовність структур. Структура містить поля про дані податкової інспекції: назва
фірми, прибуток, розмір оплачуваних податків, кількість штрафів. Обчислити кількість фірм,
дохід яких перевищує середній дохід фірм.
10. Задано послідовність структур. Структура містить поля: назва автомобіля, порядковий номер,
ім’я власника, кількість порушень. Вивести на екран ім’я власника з максимальною кількістю
порушень.
11. Задано послідовність структур. Структура містить поля: назва автомобіля, порядковий номер,
ім’я власника, кількість порушень. Вивести на екран ім’я власника з мінімальним числом
порушень.
12. Задано послідовність структур. Структура містить поля: ім’я студента, стипендія, середня
оцінка, вік. Обчислити середню оцінку студентів.
13. Задано послідовність структур. Структура містить поля: назва автомобіля, порядковий номер,
ціна автомобіля, рік випуску, розмір податків. Обчислити кількість автомобілів з останнім
(максимальним) роком випуску.
14. Задано послідовність структур. Структура містить поля даних про комп’ютер: серійний номер,
ціна, назва, прізвище власника, розмір монітора в дюймах. Обчислити середню ціну комп’ютера.
15. Задано послідовність структур. Структура містить поля за характеристиці студентських груп:
назва групи, успішність (середня цілочислова оцінка), номер курсу. Вивести на екран назву групи
з мінімальною успішністю.

21
16. Задано послідовність структур. Структура містить поля за торговою діяльності комп’ютерної
фірми: назва товару (комп’ютер, модем, гвинт), ціна (у доларах), кількість проданих одиниць.
Обчислити загальну кількість проданих одиниць.
17. Задано послідовність структур. Структура містить поля з зарплати викладачів: прізвище
викладача, назва курсу (який веде викладач), посада, зарплата, адреса. Вивести на екран адресу
максимально оплачуваного викладача.
18. Задано послідовність структур. Структура містить поля з зарплати викладачів: прізвище
викладача, назва курсу (який веде викладач), посада, зарплата, адреса. Обчислити середню,
мінімальну і максимальну зарплату викладачів.
19. Задано послідовність структур. Структура містить поля за даними податкової інспекції: назва
фірми, прибуток, розмір оплачуваних податків, кількість штрафів. Вивести на екран назву фірми з
максимальною кількістю штрафів.
20. Задано послідовність структур. Структура містить поля за даними податкової інспекції: назва
фірми, прибуток, розмір оплачуваних податків, кількість штрафів. Вивести на екран назву фірми з
максимальним прибутком.

Зміст звіту
1. Титульний лист
2. Завдання
3. Роздруківка тексту програми
4. Роздруківка результатів виконання програми
5. Аналіз результатів

22
Лабораторна робота № 16
Тема: Введення-виведення в Win32
Мета: поглибити і закріпити знання з архітектури МП платформи х86 і навички його
програмування та набути практичних навичок у побудові базового застосування під Win32 з
дослідженням параметрів віконних процедур.

Хід роботи
Завдання 1.Написати програму створення вікна Windows з файлом ресурсів. Вікно повинне
містити заголовок, у якому відображається прізвище студента, номер його навчальної групи та
його електронна адреса. Зміна розмірів вікна повинна супроводжуватись повідомленням.
Параметри ж самого вікна повинні відповідати варіанту завдання. Функцію MessageBox в
програмі використати тільки один раз.
1. Параметри вікна:
– піктограма застосування за умовчанням;
– курсор у вигляді стандартної стрілки та малого пісочного годинника;
– вікно має заголовок і рамку з обрамленням;
– вигляд вікна функції ShowWindow: вікно сховане;
– вікно розташувати у лівому верхньому куті екрана;
– розміри вікна 300 × 500 точок.
Використовувати кнопки віконного меню в такому порядку:
– перша кнопка: “Результат”. У ній – спливаюча кнопка “Выход из программы”;
– друга кнопка – “Справка”. У ній – спливаючі кнопки “Автор
программы”, “Требования к программе”, “Выход из программы”;
– третя кнопка – “Выход из программы”.
Використати в функції AnimateWindow параметр AW_SLIDE.
2. Параметри вікна:
– піктограма у вигляді білого хреста на фоні червоного кола;
– курсор у вигляді перехрестя;
– біля вікна є кнопка максимізації;
152
– вигляд вікна функції ShowWindow: вікно показане в його нормальних розмірах;
– вікно розташувати у правому верхньому куті екрана;
– розміри вікна 200 × 550 точок.
Використовувати кнопки віконного меню в такому порядку:
– перша кнопка – “О программе”;
– друга кнопка – “Автор”. У ній – спливаюча кнопка “Об авторе”;
– третя кнопка – “Выход из программы”.
Використати в функції AnimateWindow параметр AW_CENTER.
3. Параметри вікна:
– піктограма «i»;
– курсор у вигляді стрілки та знака питання;
– біля вікна є кнопка мінімізації;
– вигляд вікна функції ShowWindow: вікно згорнуте і показане як
піктограма;
– вікно розташувати у лівому нижньому куті екрана;
– розміри вікна: 500 × 600 точок.
Використовувати кнопки віконного меню в наступному порядку:
– перша кнопка – “Справка”. У ній – спливаючі кнопки “О
программе”, “Об авторе”;
– друга кнопка – “Результат”;
– третя кнопка – “_____Выход из программы”.
Використати в функції AnimateWindow параметр AW_HOR_
POSITIVE.
23
4. Параметри вікна:
– піктограма «?»;
– курсор у вигляді текстового двотавру;
– біля вікна є достатньо товста рамка;
– вигляд вікна функції ShowWindow: вікно відображається в його розмірах і позиції, встановлених
безпосередньо перед значеннями розмірів і позиції;
– вікно розташувати по центру екрана;
– розміри вікна 200 × 650 точок.
Використовувати кнопки віконного меню у такому порядку:
– перша кнопка – “Справка”. У ній – спливаючі кнопки “О
программе”, “Требования к программе”, “Об авторе”;
– друга кнопка – “Результат”;
– третя кнопка – “Выход из программы”.
Використати в функції AnimateWindow параметр AW_HOR_
NEGATIVE.
5. Параметри вікна:
– піктограма «!»;
– курсор у вигляді перекресленого кола;
– біля вікна є горизонтальна лінійка прокручування.
– вигляд вікна функції ShowWindow: вікно відображається в його потокових розмірах і позиції;
– вікно розташувати у лівому верхньому куті екрана;
– розміри вікна 250 × 700 точок.
Використовувати кнопки віконного меню в такому порядку:
– перша кнопка – “Справка”;
– друга кнопка – “Результат”. У ній – спливаючі кнопки “Выход из
программы”, “Результат”.
Використати в функції AnimateWindow параметр AW_VER_
POSITIV.
6. Параметри вікна:
– піктограма з логотипом Windows;
– курсор у вигляді чотирикінцевої стрілки;
– біля вікна є вертикальна лінійка прокручування;
– вигляд вікна функції ShowWindow: вікно згорнуте й активізує
вікно верхнього рівня в списку системи;
– вікно розташувати у правому верхньому куті екрана;
– розміри вікна 300 × 750 точок.
Використовувати кнопки віконного меню в такому порядку:
– перша кнопка – “О программе”;
– друга кнопка – “Результат”. У ній – спливаючі кнопки “Результат”,
“Об авторе”, “Выход”. Використати в функції AnimateWindow параметр AW_VER_
NEGATIVE.
7. Параметри вікна:
– піктограма у вигляді білого хреста на фоні червоного кола;
– курсор у вигляді двокінцевої стрілки, яка вказує на північний схід і південний захід;
– біля вікна є рамка, яка зазвичай буває у діалогових вікон;
– вигляд вікна функції ShowWindow: вікно згорнуте;
– вікно розташувати у лівому нижньому куті екрана;
– розміри вікна 300 × 800 точок.
Використовувати кнопки віконного меню в такому порядку:
– перша кнопка – “Сведения про автора”;
– друга кнопка – “О программе”. У ній – спливаючі кнопки
“Требования к программе”, “Результат”, “Выход”
– третя кнопка: назва “Выход”.
24
Використати в функції AnimateWindow параметр AW_CENTER.
8. Параметри вікна:
– піктограма «i»
– курсор у вигляді двокінцевої стрілки, яка вказує на захід і схід;
– біля вікна є тонка обмежувальна рамка;
– вигляд вікна функції ShowWindow: вікно сховане;
– вікно розташувати у правому нижньому куті екрана;
– розміри вікна 250 × 850 точок.
Використовувати кнопки віконного меню в такому порядку:
– перша кнопка – “Сведения про автора”;
– друга кнопка – “О программе”. У ній – спливаючі кнопки
“Требования к программе”, “Результат”, “Выход”;
– третя кнопка: назва “Выход”.
Використати в функції AnimateWindow параметр AW_HOR_
POSITIVE.
9. Параметри вікна:
– піктограма «!»;
– курсор у вигляді вертикальної стрілки;
– створюється спливаюче (popup) вікно;
– вигляд вікна функції ShowWindow: вікно показане в його
потоковому стані;
– вікно розташувати по центру екрана;
– розміри вікна500 × 900 точок.
Використовувати кнопки віконного меню в такому порядку:
– перша кнопка – “Справка”. У ній – спливаючі кнопки “Требования к программе”, “ Сведения про
автора ”;
– друга кнопка – “О программе”. У ній – спливаючі кнопки
“Требования к программе”, “Результат”;
– третя кнопка: назва “Выход”.
Використати в функції AnimateWindow параметр AW_VER_
NEGATIVE.
10. Параметри вікна:
– піктограма у вигляді білого хреста на фоні червоного кола;
– курсор у вигляді пісочного годинника;
– створюється спливаюче (popup) вікно;
– вигляд вікна функції ShowWindow: вікно сховане;
– вікно розташувати у правому нижньому куті екрана;
– розміри вікна 500 × 950 точок.
Використовувати кнопки віконного меню в наступному порядку:
– перша кнопка – “Результат”. У ній – спливаючі кнопки “Результат”, “Выход из программы”;
– друга кнопка: назва “Справка”. У ній – спливаючі кнопки “Автор программы”, “Требования к
программе”, “Выход из программы”;
– третя кнопка – “Выход из программы”.
Використати в функції AnimateWindow параметр AW_BLEND.

Зміст звіту
1. Титульний лист
2. Завдання
3. Роздруківка тексту програми
4. Роздруківка результатів виконання програми
5. Аналіз результатів

25
Лабораторна робота № 17-18
Тема: Файли. Динамічна бібліотека
Мета: поглибити і закріпити знання з архітектури МП платформи х86 і навички його
програмування та набути практичних навичок складання, налагодження і виконання програм зі
створенням файлів та запису в них даних.

Хід роботи
Завдання 1. Згідно з останньою цифрою номера студента в групі вибрати варіант завдання та
написати програму з виведенням даних у файл та в функцію MessageBox. Додати своє прізвище
та ініціали в файл, який був отриманий у результаті виконання завдання.

1. Проаналізувати масив даних із 15 елементів. Підрахувати і зберегти кількість елементів масиву,


якщо їх значення менше або більше 132, та кількість елементів масиву, значення яких дорівнюють
Вивести відповідні повідомлення.
2. Проаналізувати масив даних із 10 елементів. Додавати елементи масиву доти, доки значення
суми не перевищить 512. Зберегти номер елемента, на якому відбулося переповнення. Якщо сума
елементів не досягла значення 512,то видати відповідне повідомлення.
3. Проаналізувати масив даних із 16 елементів. Підрахувати та вивести на екран кількість
повторень кожного елемента.
4. Проаналізувати масив даних із 12 елементів. Створити масив, до якого входять елементи
першого масиву, що дорівнюють 128. Перервати виконання програми, якщо буде знайдено 5
елементів зі значенням 128. Вивести відповідні повідомлення.
5. Проаналізувати масив даних із 14 елементів. Підрахувати кількість елементів, значення яких
дорівнює 5. Рахування перервати, якщо кількість елементів перевищить 3. Вивести відповідні
повідомлення.
6. Проаналізувати масив даних із 15 елементів. Підрахувати кількість повторень кожного
елемента. Вивести відповідні повідомлення.
7. Проаналізувати масив даних із 15 елементів. Підрахувати і зберегти кількість елементів масиву,
якщо їх значення менше або більше 132, та кількість елементів масиву, значення яких дорівнюють
Вивести відповідні повідомлення.
8. Проаналізувати масив даних із 10 елементів. Додавати елементи масиву доти, доки значення
суми не перевищить 512. Зберегти номер елемента, на якому відбулося переповнення. Якщо сума
елементів не досягла значення 512,то видати відповідне повідомлення.
9. Проаналізувати масив даних із 16 елементів. Підрахувати та вивести на екран кількість
повторень кожного елемента.
10. Проаналізувати масив даних із 12 елементів. Створити масив, до якого входять елементи
першого масиву, що дорівнюють 28. Перервати виконання програми, якщо буде знайдено 5
елементів зі значенням 28. Вивести відповідні повідомлення.
11. Проаналізувати масив даних із 14 елементів. Підрахувати кількість елементів, значення яких
дорівнює 5. Рахування перервати, якщо кількість елементів перевищить 3. Вивести відповідні
повідомлення.
12. Проаналізувати масив даних із 15 елементів. Елементами масиву є числа 10, 20, 30 і 180.
Підрахувати кількість повторень кожного елемента. Вивести відповідні повідомлення.
13. Проаналізувати масив даних із 15 елементів. Підрахувати і зберегти кількість елементів
масиву, якщо їх значення менше або більше 23, та кількість елементів масиву, значення яких
дорівнюють Вивести відповідні повідомлення.
14. Проаналізувати масив даних із 10 елементів. Додавати елементи масиву доти, доки значення
суми не перевищить 51. Зберегти номер елемента, на якому відбулося переповнення. Якщо сума
елементів не досягла значення 51,то видати відповідне повідомлення.
15. Проаналізувати масив даних із 16 елементів. Підрахувати та вивести на екран кількість
повторень кожного елемента.

26
16. Проаналізувати масив даних із 12 елементів. Створити масив, до якого входять елементи
першого масиву, що дорівнюють 28. Перервати виконання програми, якщо буде знайдено 5
елементів зі значенням 28. Вивести відповідні повідомлення.
17. Проаналізувати масив даних із 14 елементів. Підрахувати кількість елементів, значення яких
дорівнює 5. Рахування перервати, якщо кількість елементів перевищить 3. Вивести відповідні
повідомлення.
18. Проаналізувати масив даних із 15 елементів. Елементами масиву є числа 10, 20, 30 і 180.
Підрахувати кількість повторень кожного елемента. Вивести відповідні повідомлення.
19. Проаналізувати масив даних із 20 елементів. Підрахувати і зберегти кількість елементів
масиву, якщо їх значення менше або більше 32, та кількість елементів масиву, значення яких
дорівнюють Вивести відповідні повідомлення.
20. Проаналізувати масив даних із 20 елементів. Додавати елементи масиву доти, доки значення
суми не перевищить 12. Зберегти номер елемента, на якому відбулося переповнення. Якщо сума
елементів не досягла значення 12, то видати відповідне повідомлення.
Завдання 2. Згідно з останньою цифрою номера студента в групі вибрати свій варіант та написати
програму на асемблері обчислення одного з виразів:
1. Задано масив А з N = 100 елементів. Навести алгоритм та програму визначення кількості
елементів масиву А, які задовольняють умову
L < Ai ≤ M, де L = 2 та M = 10.
2. Задано масив А з N = 20 елементів. Навести алгоритм та програму визначення кількості
елементів масиву А, які задовольняють умову
L ≤ Ai < M, де L = 5 та M = 15.
3. Задано масив А з N = 30 елементів. Навести алгоритм та програму визначення кількості
елементів масиву А, які задовольняють умову
L < Ai < M, де L = 4 та M = 18.
4. Задано масив А з N = 40 елементів. Навести алгоритм та програму визначення кількості
елементів масиву А, які задовольняють умову
L ≤ Ai ≤ M, де L = 5 та M = 20.
5. Задано масив А з N = 50 елементів. Навести алгоритм та програму визначення кількості
елементів масиву А, які задовольняють умову
L ≥ Ai > M, де L = 6 та M = 22.
6. Задано масив А з N = 60 елементів. Навести алгоритм та програму визначення кількості
елементів масиву А, які задовольняють умову
L > Ai ≥ M, де L = 7 та M = 24.
7. Задано масив А з N = 70 елементів. Навести алгоритм та програму визначення кількості
елементів масиву А, які задовольняють умову
L > Ai > M, де L = 8 та M = 28.
8. Задано масив А з N = 80 елементів. Навести алгоритм та програму визначення кількості
елементів масиву А, які задовольняють умову
L ≥ Ai ≥ M, де L = 9 та M = 30.
9. Задано масиви А і В по N = 90 елементів. Навести алгоритм та програму формування масиву С
за таким правилом: якщо Аi ≤ Вi, то
Сi = Аi × Вi; інакше – Сi = Аi + Вi.
10. Задано масиви А і В по N = 100 елементів. Навести алгоритм та програму формування масиву С
за таким правилом: якщо Аi ≤ Вi, то Сi = Вi – Аi; інакше – Сi = Аi × Вi.

Зміст звіту
1. Титульний лист
2. Завдання
3. Роздруківка тексту програми
4. Роздруківка результатів виконання програми
5. Аналіз результатів
27
Лабораторна робота № 19-20
Тема: Рядки
Мета: Вивчення асемблерних команд опрацьовування рядків та набуття навичок застосовування
їх при створюванні проектів в С++ із вбудованим асемблером.

Хід роботи
Завдання 1. Написати програму на С++ для введення вхідних даних і розв'язання засобами
вбудуваного асемблера згідно свого варіанту.
1. Написати програму, котра вводить рядок символів і віднаходить індекс першої коми в цьому
рядку.
2. Написати програму, котра вводить символьний рядок символів і замінює в ньому всі коми на
прогалини.
3. Написати програму, котра вводить рядок символів і віднаходить кількість цифр у цьому рядку.
4. Написати програму, котра вводить рядок символів і замінює всі цифри на прогалини.
5. Написати програму, котра вводить рядок символів і змінює місцями перший та останній введені
символи.
6. Написати програму, котра вводить рядок символів і віднаходить індекс першої крапки цьому
рядку.
7. Написати програму, котра вводить рядок символів і замінює в ньому всі крапки та коми на знак
‘%’.
8. Написати програму, котра вводить рядок символів і віднаходить серед них елемент з
найменшим номером у ANSI-таблиці.
9. Написати програму, котра вводить символьний рядок символів і будує інший рядок, який
міститиме лише цифри з цього рядка.
10. Написати програму, котра вводить рядок символів і змінює місцями третій та останній введені
символи.
11. Написати програму, котра вводить рядок символів і віднаходить індекс першого знаку “+” у
цьому рядку.
12. Написати програму, котра вводить рядок символів і замінює в ньому всі цифри на знак ‘#‘.
13. Написати програму, котра вводить дві символьні послідовності й будує нову послідовність, на
початку якої стоять елементи першої послідовності, а за ними – елементи другої.
14. Написати програму, котра вводить рядок символів і будує новий масив, який міститиме лише
великі латинські літери з першого рядка.
15. Написати програму, котра вводить символьну матрицю розміром 3х4 і визначає, чи містить ця
матриця хоча б одну цифру.
16. Написати програму, котра вводить символьну матрицю розміром 3х3 і будує послідовність,
котра співпадає з діагоналлю матриці.
17. Написати програму, котра вводить рядок символів і віднаходить кількість знаків ‘–‘ у цьому
рядку.
18. Написати програму, котра вводить символьну послідовність і визначає, чи є в ній символи Ж
або ж.
19. Написати програму, котра вводить символьну матрицю розміром 3х4 і будує послідовність,
котра співпадає з другим рядком матриці.
20. Написати програму, котра вводить символьну матрицю розміром 3х4 і визначає, чи є у
введеній матриці символи Ф та ф.
21. Написати програму, котра вводить символьну матрицю розміром 3х4 і будує послідовність,
котра співпадає з четвертим стовпчиком матриці.
22. Написати програму, котра вводить символьну матрицю розміром 3х3 і визначає символ із
найбільшим ANSI-номером.
23. Написати програму, котра вводить символьну послідовність і упорядковує елементи введеної
послідовності за зростанням кодів ANSI.
24. Написати програму, котра вводить символьну послідовність і замінює в рядку великі літери
російської абетки на малі.
28
25. Написати програму, котра вводить символьну матрицю розміром 3х2 і будує послідовність,
котра співпадає з першим стовпчиком матриці.
26. Написати програму, котра вводить рядок символів і віднаходить кількість літер російської
абетки у цьому рядку.
27. Написати програму, котра вводить рядок символів і змінює місцями другий та передостанній
введені символи.
28.. Написати програму, котра вводить рядок символів і віднаходить індекс першої цифри у цьому
рядку.
29. Написати програму, котра вводить рядок символів і замінює в ньому всі прогалини на знак ‘+’.
3.0 Написати програму, котра вводить рядок символів і віднаходить кількість символів, які не є
літерами у цьому рядку.
Завдання 2. Згідно з цифрою номера студента в групі вибрати свій варіант та написати програму з
використанням команд обробки рядків, з обов’язковим виведення у файл та й у спрощене
віконце.
1. Задано текст, що складається з 6 слів по 8 символів, розділених пропуском. Переставити слова в
тексті так, щоб кожне наступне слово починалося з тієї букви, на яку закінчилося попереднє.
Перше слово залишити на місці.
2. Задано послідовність букв у вигляді прізвища студента. Розставити їх за абеткою.
3. Задано текст у вигляді прізвища, імені та по батькові, а також e-mail студента. Ущільнити текст,
залишивши між словами по одному пропуску.
4. Задано текст із 20 символів. Визначити кількість повторень поєднань «ОР» в тексті і замінити
такі повторення символом «!».
5. Задано текст із 40 символів. Визначити кількість слів, які містять більше 4-х символів. Слова
розділяються одним пропуском.
6. Задано текст із 8 слів із різною кількістю символів. У словах із парним номером змінити
порядок букв на зворотний.
7. Побудувати послідовність з n (n ≤ 30) символів такого вигляду: АББВВВГГГГДДДДДЕЕЕЕЕЕ...
5A>6<028. Задано текст із 34 символів, що складається із слів, розділених одним пропуском.
Визначити кількість слів, в яких буква Е зустрічається понад 2 рази.
9. Задано послідовність із 37 символів. Визначити частоту повторення кожного символу.
10. Задано 8 слів по 6 символів. На початку кожного слова записано номер із двох символів.
Розставити слова за збільшенням номерів.
11. Задано текст із 15 слів, розділених пропуском. Визначити кількість слів, в яких буква А
зустрічається більше 3-х разів.
12. Задано текст із 10 слів, розділених пропусками (одним і більше). Визначити кількість слів, що
містять більше 4 символів.
13. Задано текст із 8 слів, розділених пропуском. Визначити кількість повторень букви Е в
кожному слові.
14. Задано текст із 12 слів, розділених пропуском. Розставити слова відповідно до латинського
алфавіту.
15. Задано текст із 26 символів. Визначити кількість різних символів і частоту їх повторень.
16. Задано текст, що складається з 5 слів по 7 символів. Розставити слова відповідно до
російського алфавіту.
17. Задано текст, що складається з 10 слів, розділених деякою кількістю пропусків. Визначити
кількість букв А в кожному слові.
18. Задано текст, що складається з 8 слів по 5 символів. Визначити кількість голосних букв у
кожному слові.
19. Задано текст, що складається з 4 слів по 8 символів. Визначити кількість різних букв у
кожному слові.
20. Задано текст, що складається з 7 слів по 5 символів. Видалити слова, що містять більше 3-х
букв О.
21. Задано текст, розділений на слова пропусками. Змінити порядок букв у словах на
протилежний.
29
22. Задано текст із 25 символів. Знайти слова, порядок букв в яких зворотний щодо першого слова.
(Слова розділено пропусками).
23. Задано текст із 18 символів: 3 слова по 6 символів. Здійснити кільцевий зсув кожного слова
ліворуч: 1-го – на 1 символ; 2-го – на 2 символи; 3-го – на 3 символи.
24. Побудувати послідовність вигляду АББССС із 30 символів відповідно до заданої таблиці, що
містить символ і кількість його повторень. Наприклад: А – 1 раз; Б – 2 рази; C – 3 рази і т.ін.
25. Задано текст із 30 символів, які можуть бути поділені пропусками та розділовими знаками. У
кожному слові рядка замінити першу букву на останню, другу на передостанню і т.ін.
26. Ввести довільний символьний рядок. Розділити його на два рядки: рядок голосних.

Зміст звіту
1. Титульний лист
2. Завдання
3. Роздруківка тексту програми
4. Роздруківка результатів виконання програми
5. Аналіз результатів

30
Лабораторна робота № 21-22
Тема: Графічні примітиви
Мета: поглибити і закріпити знання з архітектури МП платформи х86 і навички його
програмування та набути практичних навичоквіконного програмування на асемблері для
платформи х86.

Хід роботи
Завдання 1. Написати програму зі створенням декількох вікон з відображенням маленької іконки
вікна, не менше ніж з чотирьох пунктів головного меню, один з яких є очищення вікна,
використати фон вікна, фон заливки геометричних фігур, кольоровий шрифт з назвою свого
призвища, навчальної групи та завдання, рамки коло фігури, файлу ресурсів меню й завданням
згідно з варіантом:
1. Відобразити вписані один в один трикутник та прямокутник.
2. Відобразити вписані один в один двох закруглених прямокутника та трикутника.
3. Відобразити вписані один в один еліпс та закруглений прямокутник.
4. Відобразити 4 кола, які доторкуються кутів прямокутника.
5. Відобразити по кругу різнокольорові кола з однаковим діаметром.
6. Відобразити 3 кола, які доторкуються кутів трикутника.
7. Відобразити п’ятикутник з вписаним колом.
8. Відобразити п’ятикутну зірку.
9. Відобразити по кругу різнокольорові кола з різними діаметрами.
10. Відобразити вписані один в один чотирикутники.
11. Відобразити вікно, розміри якого плавно змінюються.
Завдання 2. Написати програму зі створенням декількох вікон, з використанням пун-ктів
головного меню або кнопок, передбачити очищення вікна, завантажити bmp-файл зі своїми
ініціалами ПІБ, вивести своє призвище, навчальну групу та завдання, рамки коло фігури (якщо це
естетично необхідно) й кнопку зни-щення вікна за його межами.
Можливо відобразити регіон за особливим бажанням.

Зміст звіту
1. Титульний лист
2. Завдання
3. Роздруківка тексту програми
4. Роздруківка результатів виконання програми
5. Аналіз результатів

31
Лабораторна робота № 23-24
Тема: Дочірнє вікно
Мета: поглибити і закріпити знання з архітектури МП платформи х86 і навички його
програмування та набути практичних навичоквіконного програмування на асемблері для
платформи х86.

Хід роботи

Завдання 1. Згідно з останньою цифрою номера студента в групі вибрати варіант завдання та
виконати операцію введення даних через дочірнє вікно для дослі-дження відповідної команди. В
меню вікна передбачити кнопки різних типів для виведення довідки про програму та автора. У
правому нижньому куті монітора (у системному tray) відобразити іконку програми, наприклад, за
допомогою структури NOTIFYICONDATA. Використати особисту іконку парограми.

1. PADDD (MMX); 6. ANDPD(SSE2);


2. PMADDWD (MMX); 7. ADDSUBPD (SSE3);
3. MULPS (SSE); 8. HADDPD (SSE3);
4. SQRTPS (SSE); 9. PMOVSXWQ (SSE4);
5. XORPD (SSE2); 10. DPPS (SSE4).
Завдання 2. Відобразити вікно з включенням BMP-файлу зі своєю фотографією та іконкою для
вікна. В якості іконки теж взяти свою фотографію. Розмір вікна повинен відповідати розміру
BMP-файлу. Створити меню та відобразити у ві-кні свої прізвище, навчальну групу та електронну
адресу. Створити кнопки з використанням BMP-файлів та з надписом на одній з кнопок свого
прізвища. Використати функцію MessageBoxIndirect з відображенням в якості власної іконки своєї
фотографії.

Зміст звіту
1. Титульний лист
2. Завдання
3. Роздруківка тексту програми
4. Роздруківка результатів виконання програми
5. Аналіз результатів

32
Лабораторна робота № 25-27
Тема: Обробка повідомлень
Мета: поглибити і закріпити знання з архітектури МП платформи х86 і навички його
програмування та набути практичних навичок обробки повідомлень від клавіатури, миші та
таймера написаних мовою асемблера з використанням АРІ-функцій під Win32.

Хід роботи
Завдання 1. Написати програму обробки повідомлень від клавіатури з відображенням іконки
вікна, пунктів меню й з виконанням завдання згідно з останньою цифрою номера студента в
навчальній групі. Відобразити у вікні своє прізвище, назву своєї навчальної групи, свого e-mail та
своєї фотографії як іконки. Використати функцію MessageBoxIndirect:
1. Установити час затримки для автоповтору клавіатури за допомогою фу-нкції
SystemParametersInfo.
2. Установити частоту затримки для автоповтору клавіатури за допомогою функції
SystemParametersInfo.
3. Установити частоту мигання курсора за допомогою функції SetCaretBlinkTime.
4. Надати можливість встановлення різних мов підтримки клавіатури за допомогою функції
LoadKeyboardLayout.
5. Використати блокування подій введення від миші та клавіатури за допомогою функції
BlockInput.
6. Використати функцію SetKeyboardState копіювання 256-байтового масиву станів клавіш
клавіатури в таблицю станів введення з клавіатури.
7. Використати функцію RegisterHotKey визначення “гарячої” клавіші.
8. Використати функцію keybd_event синтезування натиснутої клавіші для отримання знімку
екрана.
9. Використати функцію GetLastInputInfo витягування останньої події введення даних.
10. Використати функцію GetKeyNameText витягування рядка, яка поз-начає назву клавіші.
Завдання 2. Написати програму обробки повідомлень від кнопок миші зі зміною прозорості, з
відображенням іконки вікна, зміни значка відображення курсора, з пунктами меню й з виконанням
завдання згідно з останньою цифрою номера студента в групі.
1. Після подвійного клацання лівої кнопки в клієнтській області вікна воно починає
переміщуватися по вертикалі. Натискання на будь-яку клавішу припи-няє рух.
2. Натискання на праву кнопку на клієнтській області вікна приводить до зміни його розмірів
(зменшення у 2 рази). Натискання на будь-яку клавішу повертає початкові розміри.
3. Натискання на праву кнопку на клієнтській області вікна приводить до зміни реакції на
натиснення цифр. Кожне наступне натиснення цифри змінює розмір вікна. Натискання на будь-
яку іншу клавішу повертає початкові роз-міри.
4. Натискання на праву кнопку у верхній половині вікна приводить до його згортання.
Розгортання вікна – натисненням будь-якої функціональної клавіші.
5. Переміщення миші у верхній половині вікна приводить до появи періодичного мерехтіння
заголовка вікна. Натискання на певну букву переміщає ві-кно у правий верхній кут екрана.
6. Створити два вікна, одне з яких – батьківське для іншого. Переміщення миші в неклієнтській
області дочірнього вікна приводить до його згортання. Натискання на клавішу «пропуск» при
установці фокусу введення на батьків-ське вікно приводить також до його згортання.
7. Клацання лівою кнопкою в неклієнтській області вікна переміщає його вправо на задану
кількість пікселів. Натискання клавіші Alt разом з цифровою клавішею повертає вікно на місце.
8. Клацання правою кнопкою в неклієнтській області вікна приводить до того, що подальше
натискання будь-якої буквеної клавіші зрушує вікно на за-дану кількість пікселів вправо.
9. Подвійне клацання лівої кнопки в робочій області вікна приводить до того, що при натисканні
на цифрові клавіші вікно зрушується вниз на кількість пікселів відповідно до натиснутої цифри.
10. Подвійне клацання правою кнопкою в клієнтській області вікна приво-дить до того, що при
натисканні на клавіші стрілок згодом реалізується пере-міщення вікна по екрана.

33
11. Клацання правою кнопкою в нижній половині вікна приводить до зміни тексту у заголовку
вікна. Подальше натискання на букви приводить до зміни тексту заголовка вікна на натиснуту
букву.
12. Переміщення миші в нижній половині вікна максимізує вікно. Натискання на ESC –
повернення вікна до колишнього вигляду.
13. Подвійне клацання лівою кнопкою в неклієнтській області вікна мак-симізує вікно.
Натискання на певну букву – повернення до колишніх розмірів.
14. Подвійне клацання правою кнопкою у неклієнтській області вікна при-водить до його
переміщення у циклі в горизонтальному напрямі вліво та вправо до тих пір, поки не буде
натиснута певна клавіша.
15. Переміщення миші в лівій половині вікна змінює колір фону вікна (SetClassLongPtr).
Натискання на клавішу F1 відміняє зміну.
16. Подвійне клацання лівою кнопкою у неклієнтській області вікна при-водить до згортання його
в піктограму. Натискання на функціональну клавішу приводить до розгортання вікна.
17. Створити три вікна, одне з них показати. Подвійне клацання правою кнопкою в неклієнтській
області вікна приводить до виведення на екран решти вікон, якщо вони ще не показувалися.
Виведення створених, але не показаних вікон дозволене тільки у випадку, якщо не натиснута
клавіша Enter.
щення вікна у лівий верхній кут екрана. Натискання на клавіші PgUp і PgDn приводить до
переміщення вікна з лівого верхнього кута у лівий нижній кут і назад.
19. Подвійне клацання лівої кнопки в клієнтській області вікна приводить до зміни заголовка
вікна. Вибір поточного заголовка вікна залежить від кількості натискань на клавішу Insert. Кожне
наступне натискання робить активним наступний заголовок з деякого масиву заголовків
(циклічно).
20. Вивести на екран два вікна. Подвійне клацання правої кнопки в клієнт-ській області будь-якого
з вікон міняє їх місцями. Зворотний обмін –натисканням на клавішу Delete.
21. Вивести на екран два вікна. Клацання правою кнопкою в правій половині другого вікна змінює
заголовок першого. Зворотний обмін –натисканням на клавішу Insert.
22. Вивести на екран три вікна. Клацання лівою кнопкою в правій половині будь-якого вікна
приводить до згортання в піктограму останніх. Зворотне роз-гортання, якщо вони вже згорнуті,
здійснити при натисканні на будь-яку цифрову клавішу.
23. Подвійне клацання лівою кнопкою в неклієнтській області вікна приводить до виведення на
екран дочірнього вікна. Скрутити в піктограму обидва вікна можна при натисканні на клавіші F1 –
F5.
24. Створити два вікна, одне з них показати. Подвійне клацання правою кнопкою в неклієнтській
області показаного вікна приводить спочатку до показу другого вікна, потім до його згортання,
потім до його розгортання, потім до його закриття.
25. Створити два вікна. Клацання лівою кнопкою в неклієнтській області будь-якого вікна
приводить до переміщення їх у лівий верхній кут екрана так, щоб менше було зверху. Натиснення
на певну букву закриває обидва вікна.
Завдання 3. Написати програму з нестандартним вікном та обробкою повідомлень від таймера з
пунктами меню й з виконанням завдання згідно з останньою цифрою номера студента в групі:
1. Відстежування часу.
2. Таймер для зворотного відліку часу.
3. Періодичне виконання декількох функцій.
4. Періодичне виведення на екран оновленої інформації.
5. Автозбереження.
6. Задання темпу зміни яких-небудь об'єктів на екрані.
8. Використання функцій таймера для перехоплення введення даних від миші.
9–10. Мультиплікація (виведення декількох графічних об’єктів).

Зміст звіту
1. Титульний лист
34
2. Завдання
3. Роздруківка тексту програми
4. Роздруківка результатів виконання програми
5. Аналіз результатів
Лабораторна робота № 28-29
Тема: Процес
Мета: набути практичних навичок створення процесів, написаних мовою асе-мблера з
використанням АРІ-функцій під Win32.

Хід роботи

Завдання 1. Написати головну програму, яка за допомогою меню та кнопок керує іншими діями,
заданими в варіантах завдання. Надати можливість виведення назв файлів програм та примусового
їх завершення. Використати заборону запуску декількох копій програми.
1. Запуск двох програм, створених особисто, не більше 1 разу кожна та програми калькулятора
(calc.exe) не більше 2 разів. Одна з особисто створених програм виконується 10 секунд та має
діалогове вікно, а програма calc.exe виконується 20 секунд.
2. Запуск трьох програм, створених особисто, не більше 1 разу кожна та програми калькулятора
(calc.exe) не більше 3 разів. Дві з цих програм повинні мати діалогові вікна. Одна з особисто
створених програм виконується 10 се-кунд, а програма calc.exe виконується 20 секунд.
3. Запуск трьох програм, створених особисто, не більше 1 разу кожна та програми qeditor.exe не
більше 4 разів. Дві з цих програм повинні мати діалогові вікна. Одна з особисто створених
програм виконується 15 секунд.
4. Читання файлу з інтернету та його виконання не більше 1 разу та програми калькулятора
(calc.exe) не більше 2 разів. Програма з інтернету виконується 15 секунд, а програма calc.exe
виконується 30 секунд.
5. Завершити процес explorer.exe, а потім запустити його. Виконати дії з маніпуляцією цієї
програми (наприклад, виконати такі дії декілька разів).
6. Передати повідомлення з однієї програми в дві інші.
7. Запуск однієї програми, створеної особисто, та програми калькулятора (calc.exe). Особисто
створена програми виконується 15 секунд, а програма calc.exe виконується 20 секунд.
8. Запуск двох програм, створених особисто та якої-небудь програми з системної папки, наприклад
для Windows: С:\Windows\system32 та їх завершення через різні інтервали часу.
9. Запуск програми, створеної особисто, не більше 1 разу та програми калькулятора (calc.exe) не
більше 4 разів. Особисто створена програми викону-ється 10 секунд, а програма calc.exe
виконується 20 секунд.
10. Запуск програми, створеної особисто, не більше 1 разу та програми налагоджувача
(OllyDbg.exe) не більше 3 разів. Обмежити час їх виконання.
11*. Примусове завершення системних процесів.
12*. Завершення довільного процесу, а також всіх процесів, які породжені ним і його дочірніми
процесами.

Зміст звіту
1. Титульний лист
2. Завдання
3. Роздруківка тексту програми
4. Роздруківка результатів виконання програми
5. Аналіз результатів

35
Лабораторна робота № 30
Тема: Пам’ять
Мета: поглибити і закріпити знання з архітектури МП платформи х86 і нави-чки його
програмування та набути практичних навичоквикористання пам’яті та файлів під Win32 АРІ.

Хід роботи

Завдання 1. Написати програму з відображенням іконки вікна, не менше, ніж з трьох пунктів
головного меню й з використанням функції згідно з останньою цифрою номера студента в групі.
Перший пункт головного меню керує операціями згідно з варіантом. Другий пункт головного
меню відображає Help програми. Третій – інформацію про автора з відображенням своєї
фотографії. При виконанні завдання використати довідкову інформацію з msdn:
1. Записування буферованих системою даних введення-виведення на диск.
2. Додавання одного файлу до кінця іншого.
3. Сумісне використання файлів і пам’яті.
4. Обробка зашифрованих файлів і каталогів.
5. Зашифровані файли та призначені для користувача ключі.
6. Резервне копіювання та відновлення шифрованих файлів.
7. Отримання розміру стислого файлу.
8. Відновлення стислих даних в одиночному файлі.
9. Відновлення стислих даних в декількох файлах.
10. Встановлення та отримання часу створення або модифікації файлу.

Зміст звіту
1. Титульний лист
2. Завдання
3. Роздруківка тексту програми
4. Роздруківка результатів виконання програми
5. Аналіз результатів

36
Список використаних джерел

1. Галієв Г.В. Системне програмування : навч. посіб. / Г.В. Галієв. – К. : Університет «Україна»,
2019. – 113 с.
2. Гринюк С.В. Системне програмування [Текст]: Конспект лекцій для студентів спеціальності
123 - «Комп’ютерна інженерія» денної та заочної форм навчання (1 семестр) / уклад. С.В.
Гринюк, М.М. Поліщук. – Луцьк: ІВВ Луцького НТУ, 2017. – 100 с.
3. Гринюк С.В. Системне програмування [Текст]: Методичні вказівки до лабораторних робіт для
студентів спеціальності 123 - «Комп’ютерна інженерія» денної та заочної форм навчання (1
семестр) / уклад. С.В. Гринюк, В.М. Мельник – Луцьк: ІВВ Луцького НТУ, 2018. – 84 с.
4. Гололобов Д.О. Основи комп’ютерної техніки та програмування мікропроцесорів : навч. посіб.
/ Д.О. Гололобов. – К. : Редакційно-видавничий центр Державного університету
телекомунікацій, 2019. – 58с. : іл.
5. Калашников О.А. Ассемблер – это просто. Учимся программировать / О.А. Калашников. –
СПб. : БХВ, 2011. – 336 с.
6. Рисований О.М. Системне програмування [Текст]: підручник для студентів напрямку
«Компютерна інженерія» вищих навчальних закладів в 2-х томах. Том 1. – Видання четверте:
виправлено та доповнено – Х.: “Слово”, 2015.– 576 с.
7. Рисований О.М. Системне програмування [Текст]: підручник для студентів напрямку
«Компютерна інженерія» вищих навчальних закладів в 2-х томах. Том 2. – Видання четверте:
виправлено та доповнено – Х.: “Слово”, 2015.– 378 с.
8. Методичні вказівки до виконання лабораторних робіт з курсу «Системне програмування» для
студентів спеціальностей: 7.05010201 «Комп’ютерні системи та мережі», 7.05010202
«Системне програмування», 7.05010203 «Спеціалізовані комп’ютерні системи» / уклад. О. М.
Рисований. – Х. : НТУ «ХПІ», 2013. – 216 с.
9. Система команд сопроцессора. [Електронний ресурс] : (электронный учебник) – Режим
доступу: https://prog-cpp.ru/asm-coprocessor-command. – Назва з екрана.
10. Программирование на языке ассемблера. [Електронний ресурс] : (электронный курс) – Режим
доступу: http://natalia.appmat.ru/c&c++/assembler.html. – Назва з екрана.

37
ДОДАТКИ

Додаток А. Базова таблиця кодування ASCII

38
Додаток Б. Кодування Windows (cp-1251)

39
Системне програмування [Текст]: методичні вказівки до лабораторних занять для здобувачів
першого (бакалаврського) рівня вищої освіти освітньо-професійної програми «Комп’ютерна
інженерія» галузь знань 12 Інформаційні технології спеціальності 123 Комп’ютерна інженерія
денної та заочної форм навчання / уклад. О.К. Каганюк, С.В. Гринюк. – Луцьк : Луцький НТУ,
2020. – 40 с.

40
Комп’ютерний набір С.В. Гринюк

Редактор С.В. Гринюк

Підп. до друку «___» ________ 2020р. Формат 60х84/16. Папір офс.


Гарнітура Таймс. Ум. друк. арк. ____.
Тираж 50 прим.

Інформаційно-видавничий відділ
Луцького національного технічного університету
43018, м. Луцьк, вул. Львівська, 75
Друк – ІВВ Луцького НТУ

41

You might also like