Add hello-world example assembly program
This commit is contained in:
parent
7655c17ca0
commit
f6c0dc9ded
19
doc/examples/hello.asm
Normal file
19
doc/examples/hello.asm
Normal 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
|
||||
|
Loading…
Reference in New Issue
Block a user