¿Por qué este intento de usar sys_write no hace nada?

Aquí está

.SECTION .data
    msg: .string "AAAA"

.SECTION .text

.globl _start

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

No solo este códigon segfault, tampoco genera nada.
e acuerdo con lo que he leído, un programa debería llamar a sys_exit, o sería predeterminado, pero esto no sucede.