Читайте также: |
|
1. Постановка задачі для конкретного варіанта.
2. Блок-схема алгоритму виконання прикладу з детальним коментарем та описом роботи.
3. Лістинг програми з виведенням даних на екран монітора з використанням АРІ-функцій під Win32 та детальним коментарем і описом роботи.
4. Рrint screen екрана 32-розрядного налагоджувача з виконаною програмою.
5. Короткий опис виконання програми.
6. Висновки за результатами роботи.
Приклад 18.2. Виконати паралельне порівняння за допомогою SSE2-команд 2-х масивів по 9 чисел. Якщо один масив менший від другого, то виконати операцію
(a – e) b – d/b, де a = 0,1; b = 1,05; c = 2,1; d = 3,2;
інакше – виконати операцію d/b.
Лістинг 18.3:
title Rysovaniy A.N. & Хмеленко Д., НТУ “ХПІ”, КІТ-17а
.386; директива визначення типу мікропроцесора
.model flat,stdcall; завдання лінійної моделі пам’яті та угоди ОС Windows
.XMM; використання регістрів SSE
option casemap:none; відмінність малих та великих літер
include \masm32\include\kernel32.inc
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\fpu.inc
includelib \masm32\lib\fpu.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
BSIZE equ 50
.data
mas1 dd 11.4, 14.02, 9.8, 4.0, 12.14, 1.82, 67.54, 9.95, 7.16; масив №1
len EQU $- mas1
mas2 dd 11.4, 14.02, 3.14, 2.718, 5.0, 45.45, 23.35, 9.95, 79.2; масив №2
rez dd len dup(0); результат порівняння
rez2 dq?; для результату виконання операцій
a1 dd 0.10
b1 dd 1.05
c1 dd 2.10
d1 dd 3.20
buf BYTE BSIZE dup(?)
st1 db "The Rezult mas1!=mas2",0; заголовки вікна повідомлень
st2 db "The Rezult mas1==mas2",0
st3 dd 0
flag db 0
.code
_st:
xor edx,edx
mov eax,len; завантаження 40 байтів масиву
shr eax,2; len/4 = 10 - визначення кількості чисел
mov ebx,4
div ebx; визначення кількості циклів
mov ecx,eax
lea esi,mas1; завантаження масиву №1 в esi
lea edi,mas2; завантаження масиву №2 в edi
xor ebx,ebx
.WHILE(ecx!=0)
movupd XMM0,[esi]; завантаження масиву №1 в регістр XMM0
movupd XMM1,[edi]; завантаження масиву №1 в регістр XMM0
cmppd XMM0, XMM1, 0; виконання паралельного порівняння масивів
movupd rez[ebx],XMM0; збереження результату порівняння
add esi,16; перехід на наступну адресу
add edi,16
add ebx,16
dec ecx
.ENDW
mov ecx,edx; залишок чисел, що не ввійшли до паралельного порівняння
.WHILE(ecx!=0)
movupd XMM0,[esi]; завантаження масиву №1 в регістр XMM0
movupd XMM1,[edi]; завантаження масиву №1 в регістр XMM0
cmpsd XMM0, XMM1,8; виконання скалярного порівняння масивів
movupd rez[ebx],XMM0; збереження результату порівняння
add esi,4; перехід на наступну адресу
add edi,4
add ebx,4
dec ecx
.ENDW
mov ecx,9
xor ebx,ebx
.WHILE(ecx!=0)
.IF (rez[ebx]==0); якщо елементи масивів хоча б один раз не дорівнюють
mov al,1; одне одному, то встановлюємо прапорець в 1
mov flag,al
.ENDIF
dec ecx
inc ebx
.ENDW
.IF (flag==1); якщо масиви не рівні, виконуємо вираз (а-с)b-d/b
finit
fld a1
fsub c1
fmul b1
fld d1
fdiv b1
fsub
fst rez2
lea ebx,st1
.ELSE; якщо ж масиви рівні, то виконуємо d/b
finit
fld d1
fdiv b1
fst rez2
lea ebx,st2
.ENDIF
mov st3, ebx; збереження заголовку вікна
invoke FpuFLtoA,0,10,addr buf,SRC1_FPU or SRC2_DIMM; перетворення чисел
invoke MessageBox, NULL, ADDR buf, st3, MB_OK; виведення на екран
invoke ExitProcess,0
end _st
Результат виконання програми з лістингу 18.2 наведено на рис. 18.11.
Література: Рисований О.М. Системне програмування [Текст]: підручник для студентів напрямку “Комп’ютерна інженерія” вищих навчальних закладів. – Х.: “Слово”, 2010. – 924 с.
Постановка задачі
Написати програму створення вікна Windows з файлом ресурсів. Перший пункт головного меню керує операціями згідно з варіантом завдання. Другий пункт головного меню відображає Help програми. Третій – інформацію про автора. Вікно повинне містити заголовок, у якому відображається прізвище студента, номер його навчальної групи та його електронна адреса. Зміна розмірів вікна повинна супроводжуватись повідомленням. Параметри ж самого вікна повинні відповідати варіанту завдання. Використати bmp-файл.
Дата добавления: 2014-12-18; просмотров: 90 | Поможем написать вашу работу | Нарушение авторских прав |