.386
.model flat, stdcall
option casemap:none
include kernel32.inc
include windows.inc
includelib kernel32.lib
.data
;variables necesarias
msg db 'hola',0
buff db ?
hout dd ?
hin dd ?; handles de e/s
tit db 'Consola Demo',0
.code
start:
call con
call pinta
push hin
call CloseHandle
; Cierro los handles abiertos
push hout
call CloseHandle
call FreeConsole ; Cierro la consola
; Salgo de forma controlada
push NULL
call ExitProcess
con proc
;call AllocConsole
; solicito poder crear una consola
; Esto sobra porque el programa es de consola
push STD_OUTPUT_HANDLE
call GetStdHandle; obtendre el handle de la consola
mov hout,eax ; copio a hout el handle obtenido
push STD_INPUT_HANDLE
call GetStdHandle
mov hin,eax ; handle de entrada
lea eax,tit
push eax
call SetConsoleTitle
;titulo de la consola
ret
con endp
pinta proc
push NULL; nulo
lea eax,buff; buffer de escritura
push eax; meto el buffer en la pila
push 4;longitud del mensaje
lea eax,msg
push eax; meto la cadena en la pila
push hout;meto en la pila el handle
call WriteConsole
;llamo a la funcion
push NULL
push NULL
push NULL; los parametros son nulos porque no voy a
push NULL; almacenar el dato leido, excepto el handle que
push hin ; es necesario
call ReadConsole
ret
pinta endp
end start