Por que essa tentativa de usar sys_write não faz nada?

Aqui está:

.SECTION .data
    msg: .string "AAAA"

.SECTION .text

.globl _start

_start:
    mov $1, %rax
    mov $1, %rdi
    mov msg, %rsi
    mov $4, %rdx
    syscall

Esse código não apenasnão segfault, ele também não produz nada.
De acordo com o que eu li, um programa deve chamar sys_exit, ou seria segfault, mas isso não acontece.