Professional Documents
Culture Documents
SysProg Lab5
SysProg Lab5
КІ-18
Лабораторна робота №5
Тема: «Використання WinAPI для створення програм на мові Assembler»
Мета роботи: навчитися використовуючи команди WinAPI для створення
найпростіших програм.
Завдання №1
Знайти суму чисел записаних у текстовий файл
include 'win32a.inc'
Start:
call GetNumber
GetNumber:
xor esi, esi
xor ecx, ecx
xor edi, edi
loop1:
movzx ax, [buf+esi]
mov [num+esi], ax
jmp loop1
convertToNum:
push esi
call ConvertToNumber
jmp continue
convertIfEnd:
push esi
call ConvertToNumber
jmp finish
continue:
pop esi
inc edi
inc esi
xor ecx, ecx
jmp loop1
finish:
ret
ConvertToNumber:
convert:
xor eax, eax
mov ax, 10
push ecx
movzx ecx, [pow]
call Power
pop ecx
dec [pow]
mul byte[num+edi]
add [res], ax
inc edi
loop convert
ret
Power:
cmp [pow], 0
je zeroCase
cmp [pow], 1
je oneCase
Горбань Ю. В., ст. гр. КІ-18
sub ecx, 1
mov bx, ax
power:
mul bx
loop power
ret
zeroCase:
mov eax, 1
ret
oneCase:
movzx eax, ax
ret
Exit:
invoke ExitProcess, 0
import kernel,\
SetConsoleTitleA, 'SetConsoleTitleA',\
GetStdHandle, 'GetStdHandle',\
WriteConsoleA, 'WriteConsoleA',\
ReadConsoleA, 'ReadConsoleA',\
ExitProcess, 'ExitProcess'
import msvcrt,\
printf, 'printf',\
fopen, 'fopen',\
fgets, 'fgets',\
fgetc, 'fgetc'\
;powr, 'pow'\
Горбань Ю. В., ст. гр. КІ-18
Рисунок 5.2 – Результат