O executável compilado em assembly no Bash no Ubuntu no Windows não produz saída

Estou estudando um tutorial para montagem e estou tentando obter um programa hello world para execução. Estou usando o Bash no Ubuntu no Windows.

Aqui está a montagem:

section .text
    global _start     ;must be declared for linker (ld)

_start:             ;tells linker entry point
    mov edx,len     ;message length
    mov ecx,msg     ;message to write
    mov ebx,1       ;file descriptor (stdout)
    mov eax,4       ;system call number (sys_write)
    int 0x80        ;call kernel

    mov eax,1       ;system call number (sys_exit)
    int 0x80        ;call kernel

section .data
    msg db 'Hello, world!', 0xa  ;string to be printed
    len equ $ - msg     ;length of the string

Estou usando esses comandos para criar o executável:

nasm -f elf64 hello.asm -o hello.o
ld -o hello hello.o -m elf_x86_64

E eu corro usando:

./hello

O programa parece funcionar sem falha ou erro de segmentação, mas não produz saída.

C, não entendo por que o código não produz uma saída, mas me pergunto se o uso do Bash no Ubuntu no Windows tem alguma coisa a ver com isso? Por que não produz saída e como posso corrigi-la?

questionAnswers(2)

yourAnswerToTheQuestion