Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodychka-lab_OS.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.35 Mб
Скачать

Додаток 10

Створення консольної програми з використанням MASM32

;-----------------------------------

; Console.asm

;-----------------------------------

.386

.model flat, stdcall

option casemap:none

include \masm32\include\windows.inc

include \masm32\include\kernel32.inc

include \masm32\include\masm32.inc

includelib \masm32\lib\masm32.lib

includelib \masm32\lib\kernel32.lib

.data

ConsoleTitle db "Hello Win32!",0

MsgBoxText db "Laboratory work for KSN students",0

.code

start:

invoke SetConsoleTitle, ADDR ConsoleTitle

invoke StdOut,ADDR MsgBoxText

;invoke Sleep, 1000 ; Може використовуватись для

;затримки появи консольного вікна

invoke ExitProcess,NULL

end start

Для трансляції і компонування програми console.asm потрібно використати наступні параметри:

ml.exe /c /coff /Cp console.asm

Link.exe /SUBSYSTEM:CONSOLE /LIBPATH:d:\masm32\lib console.obj

Лабораторна робота №3

Тема: Створення динамічних бібліотек DLL.

Мета: Навчитись створювати динамічні бібліотеки DLL в середовищі ОС

Windows.

1. Основні теоретичні відомості

У процесі розробки програми іноді виникає потреба у використанні функції із іншої програми. Цю функцію можна просто скопіювати, що затруднить читання програми і відповідно збільшить розміри виконуваного файла. Можна також створити окремі об’єктні модулі (*.obj) з потрібних функцій і включити їх у бібліотеку (*.lib), і згодом викликати ці модулі із своєї програми. Такий процес називається статичним компонуванням (лінкуванням - Static Linking). У цьому випадку при компонуванні (лінкуванні) програми з бібліотекою компоновщик (лінкувальник) вибирає ті функції, які необхідні нашій програмі і вставляє їх у виконуваний файл. Такий процес не зменшує розмір виконуваного файлу, але дозволяє зробити код програми меншим, нагляднішим і легшим для сприйняття і читання. Даний спосіб використовувався для комп’ютерів з операційною системою MS-DOS. Недоліком цього способу є те, що можна створити велику кількість виконуваних файлів, які будуть мати ідентичні функції. Та для ОС MS-DOS це не було дуже важливою проблемою, оскільки в пам’яті могла бути тільки одна активна програма.

Інша ситуація в ОС Windows, де в пам’ять завантажується велика кількість виконуваних програм, а якщо ці програми мають функції що повторюються, то такий спосіб буде загромаджувати пам’ять. Цю проблему розв’язують динамічні бібліотеки (DLL – Dynamic Link Libraries). Динамічна бібліотека являє собою велику кількість функцій які зібрані у один файл. При запуску програми, котра використовує бібліотеку DLL, Windows автоматично завантажує її у пам’ять. Якщо запустити іншу програму, що використовує цю ж саму DLL, то Windows вже не буде завантажувати другої копії DLL у пам’ять. В пам’яті буде лише одна копія DLL яку запущені процеси розділяють між собою. Копіюється тільки секція даних для кожного процесу. В даному випадку програма компонується (лінкується) з DLL під час виконання. Такий спосіб називається динамічним компонуванням (лінкуванням - Dynamic Linking).

Динамічна бібліотека може мати різні розширення, наприклад .EXE, .FON. Стандартним розширенням є .DLL. ОС Windows автоматично завантажує тільки такі бібліотеки. Бібліотеки з іншим розширенням потрібно завантажити з програми, використовуючи функції LoadLibrary або LoadLibraryEx.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]