; ######################################################################### .386 .model flat, stdcall option casemap :none ; case sensitive ; ######################################################################### ; ------------------------------ ; Build this app in console mode. ; ------------------------------ include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc include \masm32\include\masm32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\masm32.lib ; ------------ ; Local macros ; ------------ print MACRO Quoted_Text:VARARG LOCAL Txt .data Txt db Quoted_Text,0 .code invoke StdOut,ADDR Txt ENDM input MACRO Quoted_Prompt_Text:VARARG LOCAL Txt LOCAL Buffer .data Txt db Quoted_Prompt_Text,0 Buffer db 128 dup(?) .code invoke StdOut,ADDR Txt invoke StdIn,ADDR Buffer,LENGTHOF Buffer mov eax, offset Buffer ENDM cls MACRO invoke ClearScreen ENDM Main PROTO ; ######################################################################### .data Msg1 db "Type something > ",0 Msg2 db "You typed > ",0 ; ######################################################################### .code start: invoke Main invoke ExitProcess,0 ; ######################################################################### Main proc LOCAL InputBuffer[128]:BYTE ; ------------------------------- ; console mode library procedures ; ------------------------------- ; ------------ ; using macros ; ------------ cls print "Console function test",13,10,13,10 input "Enter Some Text > " invoke StdOut,eax ; return address in eax ; ---------------- ; using procedures ; ---------------- invoke locate,10,10 invoke StdOut,ADDR Msg1 invoke StdIn,ADDR InputBuffer,LENGTHOF InputBuffer invoke locate,10,11 invoke StdOut,ADDR Msg2 invoke StdOut,ADDR InputBuffer ret Main endp ; ######################################################################### end start