
Лаб2012 / ЛР9 Dll-файли
.docСП12 ЛР9 «Дослідження програм з використанням динамічної бібліотеки»,
НТУ ХПИ, КИТ-11а, Иванов И.И.
Лабораторна робота №9. “ Дослідження програм з використанням динамічної бібліотеки ”
Мета заняття:
– поглибити і закріпити знання з архітектури МП платформи х86 і навички його програмування;
– набути практичних навичок складання, налагодження і виконання програм з використанням Dll-файлів з використанням точки входу, написаних мовою асемблеру для програмування МП платформи х86. Дані, які виводяться, необхідно підписати. Вивести довідку про автора програми, номер варіанту, повністю все завдання та своєї e-mail.
Постановка задачі
Згідно з останньою цифрою номера студента в групі вибрати свій варіант та написати програму на асемблері обчислення одного з виразів:
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. Рrint screen екрана 32-розрядного налагоджувача з виконанням програми та результатами виконання.
5. Короткий опис виконання програми.
6. Висновки за результатами роботи.
2. Задано масив А з N еелементів. Навести алгоритм та програму визначення кількості елементів масиву А, які задовольняють умову L≤Ai<M, де L=5 та M=15.
Текст програми:
Файл myio.asm
.686
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
FindMas proto :BYTE,:BYTE,:BYTE,:BYTE
.code
FindMas proc arg1:BYTE,arg2:BYTE,arg3:BYTE,arg4:BYTE
movzx ecx,arg4 ; cikl
mov ebx,0 ;schet
mov edx,0 ;po masivy
m1: mov al,arg1[edx]
.IF (al >= arg2) && (al < arg3)
inc ebx
.ENDIF
inc edx ;po masivy
loop m1
ret
FindMas endp
End
Файл mydll.asm
.686
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\bin\myio.lib
FindMas proto :BYTE,:BYTE,:BYTE,:BYTE ;масив,L,M,N
BSIZE equ 32
.data
st1 db "DLL-файлы",0
masA db 5,56,14,8,1,3,16
st2 db "Исходный массив:",0ah
st3 db "5,56,14,8,1,3,16",0ah,0ah
st4 db "Условие: 5<=Ai<15",0ah,0ah
buf db BSIZE dup(?)
frmt db "количество элементов",0ah
st5 db "удовлетворяюших условие = %d",0ah,0ah
st6 db "Богаевский А. КиТ-18б",0
N db 7
L db 5
M db 15
.code
_st:
invoke FindMas,masA,L,M,N
; ebx - лічильнік
invoke wsprintf,ADDR buf,ADDR frmt, ebx
invoke MessageBox,0,ADDR st2,ADDR st1,MB_OK
invoke ExitProcess,0
end _st
Результат
Література:
Література:
Рисований
О.М.
Системне програмування [Текст]:
підручник для студентів напрямку
“Компютерна
інженерія”
вищих
навчальних закладів.
Видання
друге: виправлено
та доповнено
– Х.: “Слово”, 2011. – 944 с.