glibc scanf Falha na segmentação quando chamada de uma função que não alinha o RSP

Ao compilar o código abaixo:

global main
extern printf, scanf

section .data
   msg: db "Enter a number: ",10,0
   format:db "%d",0

section .bss
   number resb 4

section .text
main:
   mov rdi, msg
   mov al, 0
   call printf

   mov rsi, number
   mov rdi, format
   mov al, 0
   call scanf

   mov rdi,format
   mov rsi,[number]
   inc rsi
   mov rax,0
   call printf 

   ret

usando:

nasm -f elf64 example.asm -o example.o
gcc -no-pie -m64 example.o -o example

e depois corra

./example

executar, imprima:digite um número: mas depois trava e imprime:falha de segmentação (despejo de núcleo)

Portanto, o printf funciona bem, mas o scanf não. O que estou fazendo de errado com o scanf?

questionAnswers(1)

yourAnswerToTheQuestion