Add hello-world example assembly program

This commit is contained in:
Kiril Kovachev 2025-01-31 23:27:41 +00:00
parent 7655c17ca0
commit f6c0dc9ded

19
doc/examples/hello.asm Normal file
View File

@ -0,0 +1,19 @@
global main ; expose the main function to the linker
section .text ; declare this part of the assembly code to belong to the "text" section, i.e. code section
main: ; define a symbolic label, whose address is remembered by the assembler for later
mov rax, 1 ; SYS_write system call
mov rdi, 1 ; stdout
mov rsi, hello ; pointer to start of bytes to write
mov rdx, 14 ; length of byte string to print
syscall ; instruction to trap into the OS
mov rax, 60 ; SYS_exit system call
mov rdi, 0 ; 0 exit code - signals success
syscall ; trap into OS
; (no return, process exits on the call above)
section .rodata ; declare this part of the assembly to belong to the "read-only data" section; on Linux, it is illegal/impossible to write to this area.
hello:
db "Hello, world!", 10 ; output raw bytes corresponding to the string into the binary; this can be addressed using the "hello" label