textio.asm

Check out the use of StdIn, StdOut, and locate routines. Also using invoke means you do not have to push and pop the arguments because invoke does it for you.
; #########################################################################

      .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