mirror of
https://github.com/stasenso/SHA256.git
synced 2026-06-26 21:32:43 +03:00
Подготовка среды
This commit is contained in:
@@ -0,0 +1,33 @@
|
|||||||
|
Include C:\masm32\include\windows.inc
|
||||||
|
Include C:\masm32\include\user32.inc
|
||||||
|
Include C:\masm32\include\kernel32.inc
|
||||||
|
;-------------------------------------------------------------------
|
||||||
|
;Needed For Debug Window Only
|
||||||
|
;Include <masm32.inc>
|
||||||
|
;nclude <debug.inc
|
||||||
|
;-------------------------------------------------------------------
|
||||||
|
;IncludeLib user32.lib
|
||||||
|
;ncludeLib kernel32.lib
|
||||||
|
;-------------------------------------------------------------------
|
||||||
|
;Needed For Debug Window Only
|
||||||
|
;IncludeLib masm32.lib
|
||||||
|
;IncludeLib debug.lib
|
||||||
|
|
||||||
|
.DATA
|
||||||
|
ClassName DB "MainWinClass",0
|
||||||
|
szAppName DB "SDI Application",0
|
||||||
|
MenuName DB "FirstMenu",0
|
||||||
|
szFileNew DB "You selected 'New'.",0
|
||||||
|
szFileOpen DB "You selected 'Open'.",0
|
||||||
|
szHelpAbout DB "You selected 'About'.",0
|
||||||
|
|
||||||
|
.DATA?
|
||||||
|
hInstance HINSTANCE ?
|
||||||
|
CommandLine LPSTR ?
|
||||||
|
hMenu HMENU ?
|
||||||
|
|
||||||
|
.CONST
|
||||||
|
IDM_FILE_NEW EQU 1
|
||||||
|
IDM_FILE_OPEN EQU 2
|
||||||
|
IDM_HELP_ABOUT EQU 3
|
||||||
|
IDM_FILE_EXIT EQU 4
|
||||||
@@ -1,34 +1,81 @@
|
|||||||
global _main
|
.386
|
||||||
extern _GetStdHandle@4
|
|
||||||
extern _WriteFile@20
|
|
||||||
extern _ExitProcess@4
|
|
||||||
|
|
||||||
section .text
|
.MODEL FLAT,STDCALL
|
||||||
_main:
|
|
||||||
; DWORD bytes;
|
|
||||||
mov ebp, esp
|
|
||||||
sub esp, 4
|
|
||||||
|
|
||||||
; hStdOut = GetstdHandle( STD_OUTPUT_HANDLE)
|
OPTION CASEMAP:NONE
|
||||||
push -11
|
|
||||||
call _GetStdHandle@4
|
|
||||||
mov ebx, eax
|
|
||||||
|
|
||||||
; WriteFile( hstdOut, message, length(message), &bytes, 0);
|
WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD
|
||||||
push 0
|
|
||||||
lea eax, [ebp-4]
|
|
||||||
push eax
|
|
||||||
push (message_end - message)
|
|
||||||
push message
|
|
||||||
push ebx
|
|
||||||
call _WriteFile@20
|
|
||||||
|
|
||||||
; ExitProcess(0)
|
Include SDI.inc
|
||||||
push 0
|
|
||||||
call _ExitProcess@4
|
|
||||||
|
|
||||||
; never here
|
.CODE
|
||||||
hlt
|
Start:
|
||||||
message:
|
Invoke GetModuleHandle, NULL
|
||||||
db 'Hello, World', 10
|
MOV hInstance,EAX
|
||||||
message_end:
|
Invoke GetCommandLine
|
||||||
|
MOV CommandLine, EAX
|
||||||
|
Invoke WinMain, hInstance, NULL, CommandLine, SW_SHOWDEFAULT
|
||||||
|
Invoke ExitProcess,EAX
|
||||||
|
|
||||||
|
WinMain Proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
|
||||||
|
Local wc:WNDCLASSEX
|
||||||
|
Local msg:MSG
|
||||||
|
Local hwnd:HWND
|
||||||
|
|
||||||
|
MOV wc.cbSize, SizeOf WNDCLASSEX
|
||||||
|
MOV wc.style, CS_HREDRAW or CS_VREDRAW
|
||||||
|
MOV wc.lpfnWndProc, Offset WndProc
|
||||||
|
MOV wc.cbClsExtra,NULL
|
||||||
|
MOV wc.cbWndExtra,NULL
|
||||||
|
PUSH hInst
|
||||||
|
POP wc.hInstance
|
||||||
|
MOV wc.hbrBackground, COLOR_WINDOW+1
|
||||||
|
MOV wc.lpszMenuName, NULL
|
||||||
|
MOV wc.lpszClassName, Offset ClassName
|
||||||
|
Invoke LoadIcon, NULL, IDI_APPLICATION
|
||||||
|
MOV wc.hIcon,EAX
|
||||||
|
MOV wc.hIconSm,0
|
||||||
|
Invoke LoadCursor, NULL, IDC_ARROW
|
||||||
|
MOV wc.hCursor,EAX
|
||||||
|
Invoke RegisterClassEx, addr wc
|
||||||
|
Invoke LoadMenu, hInst, Offset MenuName
|
||||||
|
MOV hMenu,EAX
|
||||||
|
Invoke CreateWindowEx, WS_EX_CLIENTEDGE, ADDR ClassName, ADDR szAppName,\
|
||||||
|
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,\
|
||||||
|
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, hMenu,\
|
||||||
|
hInst, NULL
|
||||||
|
MOV hwnd,EAX
|
||||||
|
Invoke ShowWindow, hwnd, SW_SHOWNORMAL
|
||||||
|
Invoke UpdateWindow, hwnd
|
||||||
|
.While TRUE
|
||||||
|
Invoke GetMessage, ADDR msg, NULL, 0, 0
|
||||||
|
.Break .If (!EAX)
|
||||||
|
Invoke TranslateMessage, ADDR msg
|
||||||
|
Invoke DispatchMessage, ADDR msg
|
||||||
|
.EndW
|
||||||
|
MOV EAX, msg.wParam
|
||||||
|
RET
|
||||||
|
WinMain endp
|
||||||
|
WndProc Proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
|
||||||
|
.If uMsg==WM_DESTROY
|
||||||
|
Invoke PostQuitMessage, NULL
|
||||||
|
.ElseIf uMsg==WM_COMMAND
|
||||||
|
MOV EAX,wParam
|
||||||
|
.If AX==IDM_FILE_NEW
|
||||||
|
Invoke MessageBox, NULL, ADDR szFileNew, Offset szAppName, MB_OK
|
||||||
|
.ElseIf AX==IDM_FILE_OPEN
|
||||||
|
Invoke MessageBox, NULL, ADDR szFileOpen, Offset szAppName, MB_OK
|
||||||
|
.ElseIf AX==IDM_HELP_ABOUT
|
||||||
|
Invoke MessageBox, NULL,ADDR szHelpAbout, Offset szAppName, MB_OK
|
||||||
|
.Else
|
||||||
|
Invoke DestroyWindow, hWnd
|
||||||
|
.EndIf
|
||||||
|
.Else
|
||||||
|
Invoke DefWindowProc, hWnd, uMsg, wParam, lParam
|
||||||
|
RET
|
||||||
|
.EndIf
|
||||||
|
XOR EAX,EAX
|
||||||
|
RET
|
||||||
|
WndProc EndP
|
||||||
|
|
||||||
|
End Start
|
||||||
Reference in New Issue
Block a user