home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.sberbank.sumy.ua
/
2014.11.ftp.sberbank.sumy.ua.tar
/
ftp.sberbank.sumy.ua
/
incoming
/
1
/
KEM2SQT1.asm
< prev
next >
Wrap
Assembly Source File
|
2014-02-08
|
10KB
|
477 lines
.386
.model flat, stdcall ; 32 bit memory model
option casemap :none ; case sensitive
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\gdi32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\gdi32.lib
return MACRO arg
mov eax, arg
ret
ENDM
WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD
WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
AnsiToInt PROTO :DWORD
Display24BitDib PROTO :DWORD
Display24BitBmp PROTO :DWORD
MakeWay PROTO :DWORD, :DWORD
GetFileTimeNameFormat PROTO
.data
szClassName db "666666666666666666666666666666666666666",0
szDisplayName db "<>",0
strWprintfNum db "%08d%s",0
strTxt db ".txt",0
strBmp db ".bmp",0
cFileName db 256 dup(0)
dTable dd 640 dup(0)
number dd 0
CommandLine dd 0
hWnd dd 0
hInstance dd 0
hIcon dd 0
hFindFile dd 0
Sign dd 0
Min dd 0
Max dd 0
date dd 0
picWidth dd 640
picHeight dd 480
strFindFile WIN32_FIND_DATA <0>
sysTime SYSTEMTIME <0>
.code
start:
invoke GetModuleHandle, NULL
mov hInstance, eax
invoke GetCommandLine
mov CommandLine, eax
invoke WinMain, hInstance,NULL,CommandLine,SW_SHOWDEFAULT
invoke ExitProcess,eax
WinMain proc hInst :DWORD, hPrevInst :DWORD, CmdLine :DWORD, CmdShow :DWORD
LOCAL wc :WNDCLASSEX
LOCAL msg :MSG
mov wc.cbSize, sizeof WNDCLASSEX
mov wc.style, CS_HREDRAW or CS_VREDRAW \
or CS_BYTEALIGNWINDOW
mov wc.lpfnWndProc, offset WndProc
mov wc.cbClsExtra, NULL
mov wc.cbWndExtra, NULL
push hInst
pop wc.hInstance
mov wc.hbrBackground, COLOR_WINDOW
mov wc.lpszMenuName, NULL
mov wc.lpszClassName, offset szClassName
push hIcon
pop wc.hIcon
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor, eax
push hIcon
pop wc.hIconSm
invoke RegisterClassEx, ADDR wc
invoke CreateWindowEx, 0,
ADDR szClassName,
ADDR szDisplayName,
WS_OVERLAPPEDWINDOW,
0,0,650,520,
NULL,NULL,
hInst,NULL
mov hWnd,eax
invoke ShowWindow,hWnd,SW_SHOWNORMAL
invoke UpdateWindow,hWnd
StartLoop:
invoke GetMessage,ADDR msg,NULL,0,0
cmp eax, 0
je ExitLoop
invoke TranslateMessage, ADDR msg
invoke DispatchMessage, ADDR msg
jmp StartLoop
ExitLoop:
return msg.wParam
WinMain endp
WndProc proc hWin :DWORD, uMsg :DWORD, wParam :DWORD, lParam :DWORD
LOCAL Ps :PAINTSTRUCT
LOCAL hDC :DWORD
LOCAL hTextFile :DWORD
LOCAL dwBytesRead :DWORD
.if uMsg == WM_CREATE
push edi
push esi
cld
mov ecx, 39
lea esi, szClassName
lea edi, cFileName
rep movsb
pop esi
pop edi
WndProc_FindFile:
cmp number, 0fffffh
ja WndProc_Exit_Read_File
invoke wsprintf, addr cFileName, addr strWprintfNum, number, addr strTxt
inc number
invoke FindFirstFile, addr cFileName, addr strFindFile
mov hFindFile, eax
cmp eax, INVALID_HANDLE_VALUE
je WndProc_Invalid_Handle
mov Sign, 0ffh
; invoke MessageBox, hWin, addr cFileName, addr cFileName, 0
invoke CreateFile, addr cFileName, GENERIC_READ,\
0, NULL, OPEN_EXISTING,\
FILE_ATTRIBUTE_NORMAL, NULL
mov hTextFile, eax
mov picWidth, 640
mov picHeight, 480
invoke ReadFile, hTextFile, addr cFileName, 1, addr dwBytesRead, NULL
cmp BYTE PTR cFileName, "1"
jne WndProc_File_X_Y
mov picWidth, 320
mov picHeight, 240
WndProc_File_X_Y:
push edi
cld
mov ecx, 20
lea edi, cFileName
mov eax,0
rep stosd
pop edi
invoke ReadFile, hTextFile, addr cFileName, 8, addr dwBytesRead, NULL
invoke AnsiToInt, addr cFileName
mov Min, eax
push edi
cld
mov ecx, 20
lea edi, cFileName
mov eax,0
rep stosd
pop edi
invoke ReadFile, hTextFile, addr cFileName, 8, addr dwBytesRead, NULL
invoke AnsiToInt, addr cFileName
mov Max, eax
; invoke wsprintf, addr cFileName, addr strWprintfNum, eax, 0
; invoke MessageBox, hWnd, addr cFileName, addr cFileName,0
invoke CloseHandle, hTextFile
invoke FindClose, hFindFile
jmp WndProc_FindFile
WndProc_Invalid_Handle:
cmp Sign, 0
je WndProc_FindFile
WndProc_Exit_Read_File:
return 0
.elseif uMsg == WM_TIMECHANGE
invoke InvalidateRect, hWin,0,0
return 0
.elseif uMsg == WM_PAINT
invoke BeginPaint,hWin,ADDR Ps
mov hDC, eax
invoke Display24BitDib, hDC
invoke Display24BitBmp, hDC
invoke GetFileTimeNameFormat
invoke EndPaint,hWin,ADDR Ps
return 0
.elseif uMsg == WM_DESTROY
invoke PostQuitMessage,NULL
return 0
.endif
invoke DefWindowProc,hWin,uMsg,wParam,lParam
ret
WndProc endp
GetFileTimeNameFormat proc
invoke GetLocalTime, addr sysTime
mov ax, sysTime.wYear
and eax, 0ffffh
sub ax, 2000
mov date, eax
xor edx, edx
mov ecx, 10
div ecx
mov date, edx
mov edx, 100
mul edx
add date, eax
mov ax, sysTime.wMonth
and eax, 0ffffh
mov ecx, 10
mul ecx
add date, eax
mov ax, sysTime.wDay
and eax, 0ffffh
mov ecx, 1000
mul ecx
add date, eax
mov eax, date
mov ecx, 1000
mul ecx
mov Min, eax
add eax, 999
mov Max, eax
; invoke wsprintf, addr cFileName, addr strWprintfNum, eax, 0
; invoke MessageBox, hWnd, addr cFileName, addr cFileName,0
ret
GetFileTimeNameFormat endp
MakeWay proc Pos:DWORD, Col:DWORD
push esi
push edi
push edi
cld
mov ecx, 640
lea edi, dTable
mov eax,0
rep stosb
pop edi
mov ecx, Col
mov eax, Pos
shl eax, 2
mov DWORD PTR dTable[eax], ecx
pop edi
pop esi
ret
MakeWay endp
Display24BitDib proc hDC:DWORD
LOCAL X,Y:DWORD
LOCAL hFile:DWORD
LOCAL RGB:DWORD
LOCAL wBytesRead:DWORD
push edi
push esi
push ebx
push Min
pop number
Display24BitDib_Number:
invoke wsprintf, addr cFileName, addr strWprintfNum, number, addr strBmp
invoke CreateFile, addr cFileName, GENERIC_READ,\
0, NULL, OPEN_EXISTING,\
FILE_ATTRIBUTE_NORMAL, NULL
cmp eax, INVALID_HANDLE_VALUE
je Display24BitDib_No_File
mov hFile, eax
invoke SetFilePointer, hFile, 54, 0, FILE_BEGIN
mov eax, picHeight
dec eax
mov Y, eax
Display24BitDib_Y:
mov X, 0
Display24BitDib_X:
lea ecx, RGB
lea eax, wBytesRead
invoke ReadFile, hFile, ecx, 3, eax, NULL
and RGB, 0ffffffh
invoke MakeWay, X, RGB
invoke SetPixel, hDC, X, Y, RGB
inc X
mov eax, X
cmp eax, picWidth
jne Display24BitDib_X
dec Y
cmp Y,0
jns Display24BitDib_Y
invoke CloseHandle, hFile
Display24BitDib_No_File:
inc number
mov eax, Max
cmp number, eax
jbe Display24BitDib_Number
pop ebx
pop esi
pop edi
ret
Display24BitDib endp
Display24BitBmp proc hDC:DWORD
LOCAL X,Y:DWORD
LOCAL hFile:DWORD
LOCAL RGB:DWORD
LOCAL wBytesRead:DWORD
push edi
push esi
push ebx
push Min
pop number
Display24BitBmp_Number:
invoke wsprintf, addr cFileName, addr strWprintfNum, number, addr strBmp
invoke CreateFile, addr cFileName, GENERIC_READ,\
0, NULL, OPEN_EXISTING,\
FILE_ATTRIBUTE_NORMAL, NULL
cmp eax, INVALID_HANDLE_VALUE
je Display24BitBmp_No_File
mov hFile, eax
invoke SetFilePointer, hFile, 54, 0, FILE_BEGIN
mov Y, 0
Display24BitBmp_Y:
mov X, 0
Display24BitBmp_X:
lea ecx, RGB
lea eax, wBytesRead
invoke ReadFile, hFile, ecx, 3, eax, NULL
and RGB, 0ffffffh
invoke MakeWay, X, RGB
invoke SetPixel, hDC, X, Y, RGB
inc X
mov eax, X
cmp eax, picWidth
jne Display24BitBmp_X
inc Y
mov eax, Y
cmp eax, picHeight
jb Display24BitBmp_Y
invoke CloseHandle, hFile
Display24BitBmp_No_File:
inc number
mov eax, Max
cmp number, eax
jbe Display24BitBmp_Number
pop ebx
pop esi
pop edi
ret
Display24BitBmp endp
AnsiToInt proc lpStr:DWORD
push edi
mov ecx, 64
mov edi, lpStr
mov al, 0
repne scasb
mov eax, 63
sub eax, ecx
mov ecx, eax
mov edi, lpStr
add edi, eax
dec edi
push ebx
push esi
mov esi, 0
mov ebx, 1
AnsiToInt_Cycle:
mov al, [edi]
dec edi
sub al, "0"
and eax, 0ffh
mul ebx
add esi, eax
mov eax, 10
mul ebx
push eax
pop ebx
loop AnsiToInt_Cycle
mov eax, esi
pop esi
pop ebx
pop edi
ret
AnsiToInt endp
end start