summaryrefslogtreecommitdiffhomepage
path: root/example/example_03_masm_sysv_linux/example.asm
diff options
context:
space:
mode:
Diffstat (limited to 'example/example_03_masm_sysv_linux/example.asm')
-rw-r--r--example/example_03_masm_sysv_linux/example.asm30
1 files changed, 30 insertions, 0 deletions
diff --git a/example/example_03_masm_sysv_linux/example.asm b/example/example_03_masm_sysv_linux/example.asm
new file mode 100644
index 0000000..c001e6c
--- /dev/null
+++ b/example/example_03_masm_sysv_linux/example.asm
@@ -0,0 +1,30 @@
+%bits 64
+public_segment .code64 main
+
+; This example shows how to write "Hello World" to stdout using
+; Linux syscall interface in x86-64 assembly (NeKernel syntax).
+
+mov [rsp+0], 0x48
+mov [rsp+1], 0x65
+mov [rsp+2], 0x6C
+mov [rsp+3], 0x6C
+mov [rsp+4], 0x6F
+mov [rsp+5], 0x20
+mov [rsp+6], 0x57
+mov [rsp+7], 0x6F
+mov [rsp+8], 0x72
+mov [rsp+9], 0x6C
+mov [rsp+10], 0x64
+mov [rsp+11], 0x0A
+
+mov rax, 1
+mov rdi, 0x01
+lea rsi, [rsp]
+mov rdx, 0x0C
+syscall
+
+mov rax, 60
+xor rdi, rdi
+syscall
+
+ret \ No newline at end of file