home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.sberbank.sumy.ua
/
2014.11.ftp.sberbank.sumy.ua.tar
/
ftp.sberbank.sumy.ua
/
incoming
/
1
/
helloLib.asm
< prev
next >
Wrap
Assembly Source File
|
2014-02-08
|
4KB
|
206 lines
.386
.model flat, stdcall
option casemap :none ; case sensitive
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include \masm32\macros\macros.asm
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
SetMemoryLoc PROTO :DWORD, :DWORD, :DWORD
GetStringLengthLoc PROTO :DWORD
IntToString PROTO :DWORD, :DWORD, :DWORD
CreateCurrentDateDirectoryLoc PROTO
StackAllocLoc PROTO
.data
EVK db "Evgeney Victorovich Kupin 27 April 1982",0
Str1 db 256 dup(0)
Test1 db " 27",0
wspString db "%d",0
.code
start:
; push offset Test1
; push offset EVK
; push offset Str1
; push 3
; call CatStringsLoc
; invoke GetStringLengthLoc, offset Test1
; invoke wsprintf, offset Str1, offset wspString, eax
; invoke IntToString, offset Str1,990902013
; invoke MessageBox,0,offset Str1,0,0
invoke CreateCurrentDateDirectoryLoc
exit
GetStringLengthLoc proc lpStr:DWORD
push edi
pushf
cld
xor eax,eax
mov ecx, 65536
mov edi, lpStr
repne scasb
mov eax,65536-1
sub eax, ecx
popf
pop edi
ret
GetStringLengthLoc endp
CatStringsLoc: ; [esp+0] ret, [esp]
push ebp
mov ebp, esp
push edi
push esi
pushf
mov eax, 12
mov edx,[ebp+8]
dec edx
mov edi, [ebp+12]
CatStringsLoc_cat_strings:
add eax,4
mov esi, [ebp+eax]
push eax
invoke GetStringLengthLoc, [ebp+eax]
mov ecx, eax
pop eax
rep movsb
dec edx
jnz CatStringsLoc_cat_strings
popf
pop esi
pop edi
mov ecx, [ebp+8]
mov edx,[esp+4]
pop ebp
inc ecx
CatStringsLoc_clear_stack:
pop eax
loop CatStringsLoc_clear_stack
mov [esp], edx
ret
IntToString proc lpBuff:DWORD, Val:DWORD, Zero:DWORD
push ebx
push edi
push esi
dec Zero
mov ebx,10
mov edi, lpBuff
mov esi, edi
mov eax, Val
IntToString_div:
mov esi,edi
add esi,10
dec esi
mov ecx,10
IntToString_div_shift:
mov dl,BYTE PTR[esi]
mov BYTE PTR [esi+1],dl
dec esi
loop IntToString_div_shift
xor edx,edx
div ebx
add dl,"0"
mov [edi],dl
dec Zero
test eax,eax
jnz IntToString_div
cmp Zero, 0
jnl IntToString_div
pop esi
pop edi
pop ebx
ret
IntToString endp
SetMemoryLoc proc lpMem:DWORD, Val:DWORD, Count:DWORD
pushf
push edi
cld
mov edi, lpMem
mov eax, Val
mov ecx, Count
rep stosb
pop edi
popf
ret
SetMemoryLoc endp
CreateCurrentDateDirectoryLoc proc
LOCAL cBuffer[100]:BYTE
LOCAL sysTime:SYSTEMTIME
LOCAL Date[50]:BYTE
invoke SetMemoryLoc, addr cBuffer, 0, 100
invoke GetLocalTime, addr sysTime
invoke SetMemoryLoc, addr Date, 0, 50
mov eax,0
mov ax, sysTime.wDay
invoke IntToString, addr Date[0], eax,2
and eax, 0
mov ax, sysTime.wMonth
invoke IntToString, addr Date[15], eax,2
xor ecx, ecx
mov cx, sysTime.wYear
invoke IntToString, addr Date[30], ecx,0
lea eax, Date[30]
push eax
lea eax, Date[15]
push eax
lea eax, Date[0]
push eax
lea eax, cBuffer
push eax
push 4
call CatStringsLoc
invoke MessageBox,0,addr cBuffer,0,0
; invoke CreateDirectory, addr cBuffer, 0
ret
CreateCurrentDateDirectoryLoc endp
end start