Como usar o scanf no NASM?

Eu estou tentando descobrir como usarscanf para obter entrada do usuário. Eu sei usarprintf: tudo o que tenho que fazer é empurrar os dados que quero escrever na tela para a pilha da seguinte forma:

global _main
extern _printf
extern _scanf

section .data
msg db "Hi", 0

section .text
_main:
  push ebp
  mov ebp, esp  

  push msg
  call _printf

  mov esp, ebp
  pop ebp
ret

Mas eu não consigo descobrir como usarscanf. Alguém por favor pode me dar o código-fonte mais simples possível parascanf? Eu realmente só quero colocar o que o usuário digita.

Eu não estou acostumado a montagem de 32 bits. Eu só usei 16bit, e eu sei que em 16bits (DOS) você pode fazer isso:

mov ah, 3fh
mov dx, input
int 21h

input rb 100d

E o que você digitar, será colocado no endereço de "entrada".

questionAnswers(4)

yourAnswerToTheQuestion