Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Cтворення dll та їх використання при явному зв’язуванні на мові Assembler

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
КН
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2016
Тип роботи:
Лабораторна робота
Предмет:
Системне програмування та операційні системи

Частина тексту файла

Міністерство освіти і науки Національний університет «Львівська політехніка» Кафедра ЕОМ  Звіт до лабораторної роботи № 7 з дисципліни: “Системне програмування” на тему: Cтворення dll та їх використання при явному зв’язуванні на мові Assembler Варіант - 19 Львів – 2016 СТВОРЕННЯ DLL ТА ЇХ ВИКОРИСТАННЯ ПРИ ЯВНОМУ ЗВ’ЯЗУВАННІ НА МОВІ АСЕМБЛЕР Мета: Ознайомитись з технологією та оволодіти навиками створення та використання бібліотек динамічного компонування з використанням явного зв’язування на мові Асемблера. ТЕОРИТИЧНІ ВІДОМОСТІ: Динамічне компонування образу задачі в процесі її виконання надає ряд переваг розробникам програмного забезпечення в порівнянні зі статичним копонуванням. До переваг відносяться: - зменшується розмір виконуваного файлу; - у пам’ять завантажують лише одну копію динамічної бібліотеки; - оновлення бібліотек не веде до перекомпонування застосування; - реалізовується динамічне завантаження модулів на вимогу; - можливість спільно використовувати ресурси застосування; - можна організувати спільну роботу бібліотек, розроблених із використанням різних мов програмування. Однак воно не позбавлене недоліків: - сповільнює завантаження застосування; - не ефективно використовуватися зовнішня пам’ять; - проблема є зворотної сумісності; - ускладнюється процес інсталювання програмного застосування. Однак грамонто володіючи технологією створення та підтримки динамічних бібліотек можне зменшити вплив деяких з цих недоліків на програмний продукт, а деякі подолати. Можливі 2 способи використання динамічних бібліотек. Вони називаються “явним” та “неявним” зв’язуванням. “Явне” та “неявне” зв’язування бібліотеки з програмою мають суттєві відмінності в процесі написання та компіляції програми. ЗАВДАННЯ Створити функцію в бібліотеці DLL на мові Assembler, яка виконуватиме завдання відповідно до варіанту. ВАРІАНТИ ЗАВДАННЯ: Підрахувати кількість слів у заданому рядку тексту. КОД ВИКОНАВЧОЇ ПРОГРАМИ: Файл(main.asm) .386 .model flat,stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib includelib \masm32\lib\user32.lib .data LibName db "dllPart.dll", 0 FunctionName db "WordCounter", 0 DllNotFound db "Cannot load library", 0 AppName db "Load explisit Library", 0 NotFound db "WordCounter function not found", 0 .data? hLib dd ? WordCounterAddr dd ? .code start : invoke LoadLibrary, addr LibName ; завантаження бібліотеки ;-------------------------------------------------------------- .if eax == NULL ; якщо завантаження не вдалося invoke MessageBox, NULL, addr DllNotFound, addr AppName, MB_OK ; вивести повідомлення про відсутність бібліотеки .else mov hLib, eax ; збереження заголовку бібліотеки ;-------------------------------------------------------------- invoke GetProcAddress, hLib, addr FunctionName ; визначення адреси функції .if eax == NULL ; якщо не вдалося взяти адресу invoke MessageBox, NULL, addr NotFound, addr AppName, MB_OK ; вивести повідомлення про відсутність потрібної функції .else mov WordCounterAddr, eax call[WordCounterAddr] ; виклик функції .endif ;-------------------------------------------------------------- invoke FreeLibrary, hLib ; вивантаження бібліотеки .endif ;-------------------------------------------------------------- invoke ExitProcess, NULL end start ;-------------------------------------------------------------- КОД БІБЛІОТЕКИ DLL: Заголовочний файл(dllPart.def) LIBRARY dllPart ; назва бібліотеки EXPORTS WordCounter ; назва функцій її інтерфейсу Реалізація бібліотеки(dllPart.asm) .386 .model flat,stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc include \masm32\include\msvcrt.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\msvcrt.lib .data dfmt db "%d",0 sfmt db "%s",0 ukr db "Добр...
Антиботан аватар за замовчуванням

10.02.2017 12:02

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини