Here is my program:
section .text
extern printf, scanf
global main
main:
    mov rdi, msg1
    mov rax, 0
    call printf
    mov rsi, res
    mov rdi, fmt
    mov rax, 0
    call scanf
    mov rsi, [res]
    mov rdi, msg2
    mov rax, 0
    call printf
    ret
section .data
    fmt db '%d', 0
    msg1 db 'Please give a number: ', 0
    msg2 db 'Your number is %d', 10, 0
    res dq 0
From gdb, I got :
"Program received signal SIGSEGV, Segmentation fault. 0x00007ffff7e4d88a in _IO_vfscanf () from /lib/x86_64-linux-gnu/libc.so.6"
What did I do wrong?