Міністерство освіти і науки України
Національний університет “Львівська політехніка”
Кафедра АСУ
Звіт до
лабораторної роботи №1
з курсу « Системного програмування»
на тему: «Введення в основи програмування на мові асемблер, за допомогою Win32API функцій.»
Львів 2014
Мета роботи: навчитися використовувати функції Win32API при програмуванні в операційній системі Windows.
Хід роботи:
Об’єднати результати функцій GetComputerName, GetCurrentDirectory, GetUserName та GetWindowsDirectory в один рядок. Формат результату, аналогічний до варіанту №1. Замінити в рядку-результаті всі букви, ANSI значення яких парне число, на символ «!». Звернути увагу, потрібно накласти таку умову, щоб код Enter (#13 #10), було не змінні.
Записую код програми:
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib
include advapi32.inc
includelib advapi32.lib
.data
sztitle db 'Лабортаорна робота 1',0
szbuf1 db 1000 dup(0)
size_buf1 dd 100
szbuf2 db 1000 dup(0)
szbuf3 db 100 dup(0)
szbuf4 db 1000 dup (0)
rez db 1000 dup (0)
szformat db 'ComputerName: %s',13, 10
db 'CurrentDirectory: %s', 13, 10
db 'UserName: %s',13, 10
db 'WindowsDirectory: %s', 0
.386
.model flat,STDCALL
option casemap :none ;case sensitive
include lab1.inc
.code
Begin:
call main
invoke ExitProcess,NULL
main proc
invoke GetComputerName, addr szbuf1, addr size_buf1
invoke GetCurrentDirectory, 255, addr szbuf2
invoke GetUserName, addr szbuf3, addr size_buf1
invoke GetWindowsDirectory, addr szbuf4, addr size_buf1
invoke wsprintf, addr rez, addr szformat, addr szbuf1, addr szbuf2, addr szbuf3, addr szbuf4
invoke MessageBox,0, addr rez,addr sztitle,MB_OK
lea edi,rez
td:
mov al, [edi]
and al, 1h
cmp al, 0
jnz l1
mov al, [edi]
cmp al, 65
jb l1
cmp al,122
ja l1
cmp al, 91
jb l2
cmp al, 96
ja l2
jmp l1
l2:
mov al, '!'
mov [edi], al
l1:
inc edi
mov al, [edi]
cmp al, 0
jnz td
invoke MessageBox,0, addr rez, addr sztitle,MB_OK
ret
main endp
end Begin
Приклади виконання програми:
/
/
Висновок: на цій лабораторній роботі я навчився використовувати функції Win32API при програмуванні в операційній системі Windows. Основний набір функцій знаходиться в бібліотеці kernel32.dll, котра складає ядро операційної системи Windows. В цій роботі я використав такі функції: GetComputerName, GetCurrentDirectory, GetUserName, GetWindowsDirectory та MessageBox. Для роботи з функцією GetUserName окремо підключив бібліотеку advapi32.lib. Замінив в рядку-результаті всі букви, ANSI значення яких парне число, на символ «!».