Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб2012 / ЛР9 Dll-файли

.doc
Скачиваний:
23
Добавлен:
02.02.2015
Размер:
49.66 Кб
Скачать

СП12 ЛР9 «Дослідження програм з використанням динамічної бібліотеки»,

НТУ ХПИ, КИТ-11а, Иванов И.И.

Лабораторна робота №9. Дослідження програм з використанням динамічної бібліотеки

Мета заняття:

– поглибити і закріпити знання з архітектури МП платформи х86 і навички його програмування;

– набути практичних навичок складання, налагодження і виконання програм з використанням Dll-файлів з використанням точки входу, написаних мовою асемблеру для програмування МП платформи х86. Дані, які виводяться, необхідно підписати. Вивести довідку про автора програми, номер варіанту, повністю все завдання та своєї e-mail.

Постановка задачі

Згідно з останньою цифрою номера студента в групі вибрати свій варіант та написати програму на асемблері обчислення одного з виразів:

1. Задано масив А з N = 100 елементів. Навести алгоритм та програму визначення кількості елементів масиву А, які задовольняють умову L < Ai ≤ M, де L = 2 та M = 10.

2. Задано масив А з N = 20 елементів. Навести алгоритм та програму визначення кількості елементів масиву А, які задовольняють умову LAi < 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 елементів. Навести алгоритм та програму визначення кількості елементів масиву А, які задовольняють умову LAi > M, де L = 6 та M = 22.

6. Задано масив А з N = 60 елементів. Навести алгоритм та програму визначення кількості елементів масиву А, які задовольняють умову L > AiM, де L = 7 та M = 24.

7. Задано масив А з N = 70 елементів. Навести алгоритм та програму визначення кількості елементів масиву А, які задовольняють умову L > Ai > M, де L = 8 та M = 28.

8. Задано масив А з N = 80 елементів. Навести алгоритм та програму визначення кількості елементів масиву А, які задовольняють умову L ≥ AiM, де 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 еелементів. Навести алгоритм та програму визначення кількості елементів масиву А, які задовольняють умову LAi<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 с.

2

Соседние файлы в папке Лаб2012