home *** CD-ROM | disk | FTP | other *** search
/ ftp.sberbank.sumy.ua / 2014.11.ftp.sberbank.sumy.ua.tar / ftp.sberbank.sumy.ua / incoming / 1 / release.asm < prev    next >
Assembly Source File  |  2014-02-08  |  3KB  |  188 lines

  1.     .386
  2.     .model flat, stdcall
  3.     option casemap :none                  ; case sensitive
  4.  
  5.     include \masm32\include\windows.inc
  6.     include \masm32\include\kernel32.inc
  7.     include \masm32\include\user32.inc
  8.     include \masm32\macros\macros.asm
  9.  
  10.     includelib \masm32\lib\kernel32.lib
  11.     includelib \masm32\lib\user32.lib
  12.  
  13.     SetMemoryLoc PROTO :DWORD, :DWORD, :DWORD 
  14.     GetStringLengthLoc PROTO :DWORD
  15.     IntToString PROTO :DWORD, :DWORD, :DWORD
  16.     CreateCurrentDateDirectoryLoc PROTO 
  17.  
  18.     
  19.  
  20. .data
  21.  EVK           db "Evgeney Victorovich Kupin 27 April 1982",0
  22.  
  23. .code
  24.  
  25. start:
  26.  
  27.    invoke CreateCurrentDateDirectoryLoc
  28.  
  29.     exit
  30.  
  31.    
  32. GetStringLengthLoc proc lpStr:DWORD
  33.  
  34.  push edi
  35.  pushf 
  36.  
  37.  cld
  38.  xor eax,eax
  39.  mov ecx, 65536 
  40.  mov edi, lpStr
  41.  repne scasb
  42.  
  43.  mov eax,65536-1 
  44.  sub eax, ecx  
  45.  
  46.  popf
  47.  pop edi 
  48.  
  49.  ret
  50. GetStringLengthLoc endp
  51.  
  52.  
  53. CatStringsLoc:                     ; [esp+0] ret, [esp]
  54.   push ebp
  55.   mov ebp, esp
  56.      
  57.   push edi
  58.   push esi
  59.   pushf
  60.  
  61.   cld
  62.   mov eax, 12
  63.   mov edx,[ebp+8]
  64.   dec edx
  65.   mov edi, [ebp+12]
  66.  
  67. CatStringsLoc_cat_strings:
  68.   add eax,4
  69.   mov esi, [ebp+eax]
  70.   push eax
  71.   invoke GetStringLengthLoc, [ebp+eax]
  72.   mov ecx, eax
  73.   pop eax
  74.   rep movsb
  75.   dec edx
  76.   jnz CatStringsLoc_cat_strings
  77.  
  78.   popf
  79.   pop esi
  80.   pop edi
  81.  
  82.   mov ecx, [ebp+8]
  83.   mov edx,[esp+4]
  84.   pop ebp
  85.   inc ecx
  86.   CatStringsLoc_clear_stack:
  87.   pop eax
  88.   loop CatStringsLoc_clear_stack 
  89.  
  90.   mov [esp], edx    
  91.   ret
  92.  
  93. IntToString proc lpBuff:DWORD, Val:DWORD, Zero:DWORD
  94.      push ebx
  95.      push edi  
  96.      push esi
  97.  
  98.      dec Zero
  99.      mov ebx,10
  100.      mov edi, lpBuff
  101.      mov esi, edi 
  102.      mov eax, Val
  103.  
  104. IntToString_div:
  105.      mov esi,edi
  106.      add esi,10
  107.      dec esi
  108.      mov ecx,10     
  109.  
  110. IntToString_div_shift:
  111.      mov  dl,BYTE PTR[esi]
  112.      mov BYTE PTR [esi+1],dl 
  113.      dec esi
  114.      loop IntToString_div_shift
  115.  
  116.      xor edx,edx 
  117.      div ebx
  118.      add dl,"0"
  119.      mov [edi],dl 
  120.      dec Zero 
  121.      test eax,eax
  122.      jnz IntToString_div
  123.      cmp Zero, 0
  124.      jnl IntToString_div 
  125.  
  126.      pop esi 
  127.      pop edi
  128.      pop ebx
  129.      ret 
  130. IntToString endp
  131.  
  132. SetMemoryLoc proc lpMem:DWORD, Val:DWORD, Count:DWORD 
  133.  
  134.       pushf
  135.       push edi 
  136.  
  137.       cld
  138.       mov edi, lpMem
  139.       mov eax, Val
  140.       mov ecx, Count
  141.       rep stosb
  142.  
  143.       pop edi
  144.       popf
  145.       ret 
  146. SetMemoryLoc endp
  147.  
  148. CreateCurrentDateDirectoryLoc proc
  149.  LOCAL cBuffer[100]:BYTE
  150.  LOCAL sysTime:SYSTEMTIME
  151.  LOCAL Date[50]:BYTE
  152.  
  153.        
  154.         invoke SetMemoryLoc, addr cBuffer, 0, 100
  155.  
  156.         invoke GetLocalTime, addr sysTime 
  157.  
  158.         invoke SetMemoryLoc, addr Date, 0, 50
  159.  
  160.         mov eax,0
  161.         mov ax, sysTime.wDay 
  162.         invoke IntToString, addr Date[0], eax,2
  163.  
  164.         and eax, 0 
  165.         mov ax, sysTime.wMonth
  166.         invoke IntToString, addr Date[15], eax,2
  167.  
  168.         xor ecx, ecx
  169.         mov cx, sysTime.wYear
  170.         invoke IntToString, addr Date[30], ecx,0    
  171.  
  172.  
  173.         lea eax, Date[30]
  174.         push eax 
  175.         lea eax, Date[15]
  176.         push eax
  177.         lea eax, Date[0]
  178.         push eax
  179.         lea eax, cBuffer
  180.         push eax
  181.         push 4 
  182.         call CatStringsLoc 
  183.    
  184.         invoke CreateDirectory, addr cBuffer, 0
  185.  
  186.         ret 
  187. CreateCurrentDateDirectoryLoc endp
  188. end start