Czy może mi ktoś powiedzieć dlaczego to nie działa ? (Linux/64)

    format ELF64 executable
    entry _start

    _start:
        mov rax, 1      ; zapis do pliku
        mov rdi, 1      ; na ekran
        mov rsi, jak_masz   ; napis do wyświetlenia: pytanie
        mov rdx, jak_masz_dl    ; długość napisu
        syscall     ; wyświetlamy

        mov rax, 0      ; czytanie z pliku
        mov rdi, 0      ; z klawiatury
        mov rsi, imie   ; dokąd czytać?
        mov rdx, imie_dl    ; ile bajtów czytać?
        syscall     ; wczytujemy

        mov rax, 0      ; zapis do pliku
        mov rdi, 1      ; na ekran
        mov rsi, czesc  ; napis do wyświetlenia: "cześć"
        mov rdx, czesc_dl   ; długość napisu
        syscall     ; wyświetlamy

        mov rax, 0      ; zapis do pliku
        mov rdi, 1      ; na ekran
        mov rsi, imie   ; napis do wyświetlenia: imię
        mov rdx, imie_dl    ; długość napisu
                syscall     ; wyświetlamy

        mov rax, 60
        syscall

    segment readable writeable      ; początek sekcji danych

    jak_masz    db  "Jak masz na imie? "
    jak_masz_dl =   $ - jak_masz

    ; rezerwuj 20 bajtów o wartości początkowej zero, na imię
    imie:       times 20 db 0
    imie_dl     =   $ - imie

    czesc       db  "Czesc "
    czesc_dl    =   $ - czesc