.386
.model flat, stdcall
option casemap :none
include /masm32/include/windows.inc
include /masm32/include/kernel32.inc
includelib /masm32/lib/kernel32.lib
include /masm32/include/user32.inc
includelib /masm32/lib/user32.lib
include /masm32/include/masm32.inc
includelib /masm32/lib/masm32.lib
.data?
hStdin HANDLE ?
cRead DWORD ?
hStdout HANDLE ?
iLength DWORD ?
cWritten DWORD ?
szInputBuffer db 256 dup(?)
szOutputBuffer db 512 dup(?)
.data
szCaption db 'Input!',0
szMessage db 'Error!',0
szFormat db "%s%s", 0
szDisplay db '您输入的字符串是:',0
.code
_WinMain proc
invoke GetStdHandle,STD_INPUT_HANDLE
.if eax==INVALID_HANDLE_VALUE
invoke MessageBox,NULL,offset szMessage,offset szCaption,MB_OK
.else
mov hStdin,eax
.endif
invoke ReadConsole,hStdin,offset szInputBuffer,255,offset cRead,NULL
.if eax==NULL
invoke MessageBox,NULL,offset szMessage,offset szCaption,MB_OK
.endif
invoke wsprintf,offset szOutputBuffer,offset szFormat,offset szDisplay,offset szInputBuffer
invoke GetStdHandle,STD_OUTPUT_HANDLE
.if eax==INVALID_HANDLE_VALUE
invoke MessageBox,NULL,offset szMessage,offset szCaption,MB_OK
.else
mov hStdout,eax
.endif
invoke lstrlen,offset szOutputBuffer
mov iLength,eax
invoke WriteConsole,hStdout,offset szOutputBuffer,iLength,offset cWritten,NULL
ret
_WinMain endp
start:
call _WinMain
invoke StdIn,NULL,NULL
invoke ExitProcess,NULL
end start