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

  1.  
  2. format PE GUI 4.0
  3. entry start
  4.  
  5. include 'win32w.inc'
  6.  
  7. section '.idata' import data readable writeable
  8.  
  9.   library kernel32,'KERNEL32.DLL',\
  10.       user32,'USER32.DLL',\
  11.       gdi32,'GDI32.DLL'
  12.  
  13.   include 'api\kernel32.inc'
  14.   include 'api\user32.inc'
  15.   include 'api\gdi32.inc'
  16.  
  17. section '.data' data readable writeable
  18.  
  19.   _class TCHAR 'Evgeney_Victorovich_Kupin_27_April_1982',0
  20.   _title TCHAR 'Shot',0
  21.   _error TCHAR 'Evgeney_Victorovich_Kupin_27_April_1982',0
  22.  
  23.   EVKupin  TCHAR 'Evgeney Victorovich Kupin, born 27 April 1982',0
  24.  
  25.   cFormatDcSt  TCHAR '%08d%s',0
  26.   cFileName    TCHAR '00000001.bmp',0
  27.  
  28.   WindWidth  dd  650
  29.   WindHeight dd  520
  30.  
  31.   MinDate    dd  02173000
  32.   MaxDate    dd  02173900
  33.  
  34.   wc WNDCLASS 0,WindowProc,0,0,NULL,NULL,NULL,COLOR_WINDOW,NULL,_class
  35.  
  36.   msg MSG
  37.  
  38. section '.bss' data readable writeable
  39.  
  40.   hwnd dd ?
  41.   PosX dd ?
  42.   PosY dd ?
  43.   hdc  dd ?
  44.  
  45.   date     dd ?
  46.   number dd ?
  47.  
  48.   sysTime  SYSTEMTIME
  49.  
  50. section '.text' code readable executable
  51.  
  52.   start:
  53.  
  54.     invoke    GetModuleHandle,0
  55.     mov    [wc.hInstance],eax
  56.     invoke    LoadIcon,0,IDI_APPLICATION
  57.     mov    [wc.hIcon],eax
  58.     invoke    LoadCursor,0,IDC_ARROW
  59.     mov    [wc.hCursor],eax
  60.     invoke    RegisterClass,wc
  61.     test    eax,eax
  62.     jz    error
  63.  
  64.     invoke    CreateWindowEx,0,_class,_title,WS_OVERLAPPEDWINDOW,\
  65.           0,0,[WindWidth],[WindHeight],\
  66.           NULL,NULL,[wc.hInstance],NULL
  67.     test    eax,eax
  68.     jz    error
  69.     mov    [hwnd],eax
  70.  
  71.     invoke    ShowWindow, [hwnd], SW_SHOWNORMAL
  72.     invoke    UpdateWindow, [hwnd]
  73.  
  74.   msg_loop:
  75.     invoke    GetMessage,msg,NULL,0,0
  76.     cmp    eax,1
  77.     jb    end_loop
  78.     jne    msg_loop
  79.     invoke    TranslateMessage,msg
  80.     invoke    DispatchMessage,msg
  81.     jmp    msg_loop
  82.  
  83.   error:
  84.     invoke    MessageBox,NULL,_error,NULL,MB_ICONERROR+MB_OK
  85.  
  86.   end_loop:
  87.     invoke    ExitProcess,[msg.wParam]
  88.  
  89. proc DisplayDibPixel
  90.   local X:DWORD, Y:DWORD, hFile:DWORD,dwBytesRead:DWORD,RGB:DWORD
  91.  
  92.     push    ebx esi edi
  93.  
  94.     push    [MinDate]
  95.     pop    [number]
  96.  
  97. DisplayDibPixel_NUMBER:
  98.     invoke    wsprintf, cFileName, cFormatDcSt, [number], cFileName+16
  99.  
  100.     invoke    CreateFile, cFileName, GENERIC_READ,\
  101.               0, NULL, OPEN_EXISTING,\
  102.               FILE_ATTRIBUTE_NORMAL, NULL
  103.     cmp    eax, INVALID_HANDLE_VALUE
  104.     je    DisplayDibPixel_NO_FILE
  105.     mov    [hFile], eax
  106.  
  107.     invoke SetFilePointer,[hFile],54,0,FILE_BEGIN
  108.  
  109.     mov    [Y], 479
  110. DisplayDibPixel_Y:
  111.     mov    [X], 0
  112. DisplayDibPixel_X:
  113.     lea    ecx, [RGB]
  114.     lea    eax, [dwBytesRead]
  115.     invoke    ReadFile,[hFile], ecx, 3, eax, NULL
  116.     and    [RGB], 0xffffff
  117.     invoke    SetPixel,[hdc],[X],[Y],[RGB]
  118.     inc    [X]
  119.     cmp    [X],640
  120.     jne    DisplayDibPixel_X
  121.     dec    [Y]
  122.     cmp    [Y],0
  123.     jns    DisplayDibPixel_Y
  124.  
  125.  
  126.     invoke    CloseHandle,[hFile]
  127.  
  128. DisplayDibPixel_NO_FILE:
  129.     inc    [number]
  130.     mov    eax, [MaxDate]
  131.     cmp    [number], eax
  132.     jb    DisplayDibPixel_NUMBER
  133.  
  134.     pop    edi esi ebx
  135.     ret
  136. endp
  137.  
  138. proc WindowProc uses ebx esi edi, hwnd,wmsg,wparam,lparam
  139.   local ps:PAINTSTRUCT
  140.  
  141.     cmp    [wmsg],WM_PAINT
  142.     je    WIN_MAIN_PAINT
  143.     cmp    [wmsg], WM_CREATE
  144.     je    WIN_MAIN_CREATE
  145.     cmp    [wmsg],WM_DESTROY
  146.     je    WIN_MAIN_DESTROY
  147.  
  148.   WIN_MAIN_DEFAULT:
  149.     invoke    DefWindowProc,[hwnd],[wmsg],[wparam],[lparam]
  150.     jmp    WIN_MAIN_FINISH
  151.  
  152.   WIN_MAIN_CREATE:
  153.     invoke    GetLocalTime, sysTime
  154.     mov    ax,[sysTime.wYear]
  155.     and    eax, 0xffff
  156.     sub    ax, 2000
  157.     mov    [date], eax
  158.     xor    edx, edx
  159.     mov    ecx, 10
  160.     div    ecx
  161.     mov    [date], edx
  162.     mov    edx, 100
  163.     mul    edx
  164.     add    [date], eax
  165.  
  166.     mov    eax, DWORD[sysTime.wMonth]
  167.     and    eax, 0xffff
  168.     mov    ecx, 10
  169.     mul    ecx
  170.     add    [date], eax
  171.  
  172.     mov    eax, DWORD[sysTime.wDay]
  173.     and    eax, 0xffff
  174.     mov    ecx, 1000
  175.     mul    ecx
  176.     add    [date], eax
  177.  
  178.     mov    eax, [date]
  179.     mov    ecx, 1000
  180.     mul    ecx
  181.  
  182.     mov    [MinDate], eax
  183.     add    eax, 999
  184.     mov    [MaxDate], eax
  185.  
  186.       ;  invoke  wsprintf, cFileName, cFormatDcSt, [MaxDate], cFileName+16
  187.      ;   invoke  MessageBox,[hwnd],cFileName,cFileName,0
  188.     xor    eax, eax
  189.     jmp    WIN_MAIN_FINISH
  190.  
  191.   WIN_MAIN_PAINT:
  192.     lea    eax, [ps]
  193.     invoke    BeginPaint, [hwnd], eax
  194.     mov    [hdc],eax
  195.     stdcall DisplayDibPixel
  196.     lea    eax, [ps]
  197.     invoke    EndPaint, [hwnd], eax
  198.     jmp WIN_MAIN_FINISH
  199.  
  200.   WIN_MAIN_DESTROY:
  201.     invoke    PostQuitMessage,0
  202.     xor    eax,eax
  203.  
  204.   WIN_MAIN_FINISH:
  205.     ret
  206. endp
  207.  
  208.