Here is the code itself, hello.asm
.section .note.netbsd.ident, "a" .int 0x00000007 # Name size .int 0x00000004 # Desc size .int 0x00000001 # value 0x01 .ascii "NetBSD", "\0", "\0" # "NetBSD\0\0" .int 1000000000 # __NetBSD_Version__ (please see <sys/param.h>)
.section .text .global _start _start: mov $0x04, %rax # write (please see sys/syscall.h) mov $0x01, %rdi # first arg, file descriptor mov $msg, %rsi # second arg, the string mov $len, %rdx # third arg, length of the string int $0x80 # syscall mov $0x01, %rax # exit (please see sys/syscall.h) mov $0x00, %rdi # first param, return value EXIT_SUCCESS int $0x80 # syscall .section .data msg: .asciz "Hello World!\n" # null teminated string len = . - msg
Compile
as hello.asm -o hello.o
Link
ld hello.o -o hello
Run
./hello
Further reading material
- Log in to post comments