um, for MASM 32 bit, found a sample for you although it's not really "super optimized" or anything but does it quick.
if you actually do a comparison between the two using a slow microprocessor and low memory, you will see a difference where the c++ version will have a slight lag.
anyway, here is the sample (it's on a 32 bit compatible console):
Code:
; ########################################
.386
.model flat, stdcall
option casemap :none ; case sensitive
; ########################################
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 ; <------------------- LOOK HERE
invoke StdOut,ADDR Msg1
invoke StdIn,ADDR InputBuffer,LENGTHOF InputBuffer
invoke locate,10,11 ; <------------------- LOOK HERE
invoke StdOut,ADDR Msg2
invoke StdOut,ADDR InputBuffer
ret
Main endp
; ########################################
end start
here is the executable (after compiling this):
oh yeah, i converted the file to type ".zip"
just change the extension to ".exe" (".exe" files are invalid) or else it the computer will claim that the file is corrupted or something.
and honestly, this is a fresh copy (no anything but the program itself). if you don't believe me, don't download it. you can even try every single virus scanner ever developed on earth. otherwise, the source is available for viewing above. lastly, stop this arguing already (if it is an arguement).