We then pass the address on the stack of the beginning of the string to the write syscall, as well as its length: %define SYSCALL_WRITE 1 %define STDOUT 1 print_hello: push rbp ; Save rbp on the stack to be able to restore it at the end of the function. mov rbp, rsp ; Set rbp to rsp sub rsp, 5 ; Reserve 5 bytes of space on the stack. mov BYTE [rsp + 0], 'h' ; Set each byte on the stack to a string