МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ЗВІТ
З лабораторної роботи №5
з дисципліни “Системне програмування”
на тему: “ Особливості програмування з використанням функцій Win32 API”
Мета: ознайомитись з можливостями та набути навиків програмування на Асемблері в OS Windows та засвоїти навики використання функцій API Win32.
ЗАВДАННЯ
Реалізувати програму, що викликає Win32 API функцію згідно варіанту і виводить результат її роботи на екран.
№ варіанту
Функція API
27
GetSystemTime
ХІД ВИКОНАННЯ
Згідно варіанту змінюю код програми наведеної в методичних вказівках на власний.
Лістинг програми
.586 ; для процесора не нижче INTEL-586
.model flat, STDCALL ; компілювати як програму для WIN32
option casemap :none ; код чутливий до регістру літер
; Визначення зовнішніх процедур:
include \masm32\include\windows.inc ; завжди першим
include \masm32\macros\macros.asm ; підтримка макросів MASM
; --------------------------------------------------------------
; підключення файлів з форматами прототипів виклику функцій
include \masm32\include\masm32.inc
include \masm32\include\gdi32.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
; --------------------------------------------------------------
; підключення заголовків бібліотек експортованих функцій
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\gdi32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
.DATA
TIME SYSTEMTIME<>
TIMEFORMAT db "HH:mm:ss",0
;my_title db ' Лабораторна робота № 5 ', 0
;my_message db 'Time is: ' ;
szBuffer db 100 dup (0)
.CODE
start:
invoke GetSystemTime,offset TIME
invoke GetTimeFormat,LOCALE_USER_DEFAULT,NULL,offset TIME, offset TIMEFORMAT, offset szBuffer, sizeof szBuffer
invoke MessageBox,0,offset szBuffer,0,MB_OK
invoke ExitProcess,0
END start
Результат виконання нової програми
/
Рисунок 1. Результат виконання нової програми
Висновок: на даній лабораторній роботі я ознайомився з можливостями та набув навиків програмування на Асемблері в OS Windows та засвоїв навики використання функцій API Win32.
4.2.1
; Program "Hello world"
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; ПРОЦ, МОДЕЛЬ, ОПЦІЇ, ІНКЛУДИ, БІБЛІОТЕКИ ІМПОРТУ
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
.386
.model flat, stdcall
option casemap:none
;includelib libcmt.lib; for new vs(from vs2015)
;includelib libvcruntime.lib; for new vs(from vs2015)
;includelib libucrt.lib; for new vs(from vs2015)
;includelib legacy_stdio_definitions.lib; for new vs(from vs2015)
includelib msvcrt.lib; for old vs(to vs2013)
;includelib masm32\lib\msvcrt.lib; for masm32p
;includelib \masm32\lib\msvcrt.lib; for masm32
includelib kernel32.lib; for vs
;includelib masm32\lib\kernel32.lib; for masm32p
;includelib \masm32\lib\kernel32.lib; for masm32
SetConsoleTitleA PROTO :DWORD
GetStdHandle PROTO :DWORD
WriteConsoleA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
ExitProcess PROTO :DWORD
Sleep PROTO :DWORD
sprintf PROTO near C :DWORD,:VARARG
strlen PROTO near C :DWORD
.data
sWriteText db 'HELLO, WORLD!!!!', 128 dup(0)
fmt db "result = %.3lf", 13, 10, 0;
temp qword ?
;// X= A2*B1+C1/ (K-E1*F1)
vA dq 10.; +8
vB dd 20.; +16
vC dd 30.; +20
vE dd 40.; +24
vF dd 50.; +28
a dq 10., 20., 30.;
x dq ?, ?, ?;
K equ 1; (153136d)
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; СЕКЦІЯ КОНСТАНТ
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
.const
sConsoleTitle db 'My First Console Application',0
;sWriteText db 'HELLO, WORLD!!!!', 128 dup(0)
;-=-=-...