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 >
Assembly Source File  |  2014-02-08  |  4KB  |  206 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.     StackAllocLoc PROTO
  18.     
  19.  
  20. .data
  21.  EVK           db "Evgeney Victorovich Kupin 27 April 1982",0
  22.  
  23.  Str1 db 256 dup(0)
  24.  Test1 db " 27",0
  25.  wspString db "%d",0
  26.  
  27. .code
  28.  
  29. start:
  30.  
  31.  
  32.  ;   push offset Test1
  33.  ;   push offset EVK
  34.  ;   push offset Str1
  35.  ;   push 3 
  36.  ;   call CatStringsLoc 
  37.  
  38.    ; invoke GetStringLengthLoc, offset Test1
  39.    ; invoke wsprintf, offset Str1, offset wspString, eax
  40.   ;  invoke IntToString, offset Str1,990902013
  41.   ;  invoke MessageBox,0,offset Str1,0,0 
  42.  
  43.    invoke CreateCurrentDateDirectoryLoc
  44.  
  45.  
  46.     exit
  47.  
  48.    
  49. GetStringLengthLoc proc lpStr:DWORD
  50.  
  51.  push edi
  52.  pushf 
  53.  
  54.  cld
  55.  xor eax,eax
  56.  mov ecx, 65536 
  57.  mov edi, lpStr
  58.  repne scasb
  59.  
  60.  mov eax,65536-1 
  61.  sub eax, ecx  
  62.  
  63.  popf
  64.  pop edi 
  65.  
  66.  ret
  67. GetStringLengthLoc endp
  68.  
  69.  
  70. CatStringsLoc:                     ; [esp+0] ret, [esp]
  71.   push ebp
  72.   mov ebp, esp
  73.      
  74.   push edi
  75.   push esi
  76.   pushf
  77.  
  78.   mov eax, 12
  79.   mov edx,[ebp+8]
  80.   dec edx
  81.   mov edi, [ebp+12]
  82.  
  83. CatStringsLoc_cat_strings:
  84.   add eax,4
  85.   mov esi, [ebp+eax]
  86.   push eax
  87.   invoke GetStringLengthLoc, [ebp+eax]
  88.   mov ecx, eax
  89.   pop eax
  90.   rep movsb
  91.   dec edx
  92.   jnz CatStringsLoc_cat_strings
  93.  
  94.   popf
  95.   pop esi
  96.   pop edi
  97.  
  98.   mov ecx, [ebp+8]
  99.   mov edx,[esp+4]
  100.   pop ebp
  101.   inc ecx
  102.   CatStringsLoc_clear_stack:
  103.   pop eax
  104.   loop CatStringsLoc_clear_stack 
  105.  
  106.   mov [esp], edx    
  107.   ret
  108.  
  109. IntToString proc lpBuff:DWORD, Val:DWORD, Zero:DWORD
  110.      push ebx
  111.      push edi  
  112.      push esi
  113.  
  114.      dec Zero
  115.      mov ebx,10
  116.      mov edi, lpBuff
  117.      mov esi, edi 
  118.      mov eax, Val
  119.  
  120. IntToString_div:
  121.      mov esi,edi
  122.      add esi,10
  123.      dec esi
  124.      mov ecx,10     
  125.  
  126. IntToString_div_shift:
  127.      mov  dl,BYTE PTR[esi]
  128.      mov BYTE PTR [esi+1],dl 
  129.      dec esi
  130.      loop IntToString_div_shift
  131.  
  132.      xor edx,edx 
  133.      div ebx
  134.      add dl,"0"
  135.      mov [edi],dl 
  136.      dec Zero 
  137.      test eax,eax
  138.      jnz IntToString_div
  139.      cmp Zero, 0
  140.      jnl IntToString_div 
  141.  
  142.      pop esi 
  143.      pop edi
  144.      pop ebx
  145.      ret 
  146. IntToString endp
  147.  
  148. SetMemoryLoc proc lpMem:DWORD, Val:DWORD, Count:DWORD 
  149.  
  150.       pushf
  151.       push edi 
  152.  
  153.       cld
  154.       mov edi, lpMem
  155.       mov eax, Val
  156.       mov ecx, Count
  157.       rep stosb
  158.  
  159.       pop edi
  160.       popf
  161.       ret 
  162. SetMemoryLoc endp
  163.  
  164. CreateCurrentDateDirectoryLoc proc
  165.  LOCAL cBuffer[100]:BYTE
  166.  LOCAL sysTime:SYSTEMTIME
  167.  LOCAL Date[50]:BYTE
  168.  
  169.        
  170.         invoke SetMemoryLoc, addr cBuffer, 0, 100
  171.  
  172.         invoke GetLocalTime, addr sysTime 
  173.  
  174.         invoke SetMemoryLoc, addr Date, 0, 50
  175.  
  176.         mov eax,0
  177.         mov ax, sysTime.wDay 
  178.         invoke IntToString, addr Date[0], eax,2
  179.  
  180.         and eax, 0 
  181.         mov ax, sysTime.wMonth
  182.         invoke IntToString, addr Date[15], eax,2
  183.  
  184.         xor ecx, ecx
  185.         mov cx, sysTime.wYear
  186.         invoke IntToString, addr Date[30], ecx,0    
  187.  
  188.  
  189.         lea eax, Date[30]
  190.         push eax 
  191.         lea eax, Date[15]
  192.         push eax
  193.         lea eax, Date[0]
  194.         push eax
  195.         lea eax, cBuffer
  196.         push eax
  197.         push 4 
  198.         call CatStringsLoc 
  199.  
  200.        invoke MessageBox,0,addr cBuffer,0,0
  201.    
  202.    ;      invoke CreateDirectory, addr cBuffer, 0
  203.  
  204.         ret 
  205. CreateCurrentDateDirectoryLoc endp
  206. end start