This is the 64bit version of the famous: "hello, world" program written in assembly language on a Linux system. Instead of using a system call to write the string to stdout, this version make use of libc's printf function.
.section .data
msg: .asciz "Hello, world\n"
.section .text
.global _start
_start:
# printf
pushq %rax # Push an arbitrary register to the stack to align it.
mov $msg, %rdi # The message itself.
mov $0x0, %rax # printf is a varargs function, set the number of vector
call printf # arguments passed to it - here 0 - and then call printf.
popq %rax # Pop the arbitrary register to get it off the stack.
# exit
mov $0x0, %rdi
call exit
Assuming the file is called helloprintf64.s, compile and link it with the following commands:
as -o helloprintf64.o helloprintf64.s
ld -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o helloprintf64 -lc helloprintf64.o