init
authorDylan Lloyd <dylan@dylansserver.com>
Sun, 14 Oct 2012 18:14:05 +0000 (14:14 -0400)
committerDylan Lloyd <dylan@dylansserver.com>
Sun, 14 Oct 2012 18:14:05 +0000 (14:14 -0400)
hello.asm [new file with mode: 0644]

diff --git a/hello.asm b/hello.asm
new file mode 100644 (file)
index 0000000..7e5d8c1
--- /dev/null
+++ b/hello.asm
@@ -0,0 +1,27 @@
+section .data
+    hello:     db 'Hello, world.',10   ; declare initialized string with linefeed char
+    helloLen:  equ $-hello             ; declare and init. constant
+    done: db 0
+
+section .text
+    global _start
+
+_start:
+    movzx eax, byte [done]      ; Pad value of done to one byte and put in eax
+    cmp eax,1                   ; Compare eax with 1
+    jg myFirstASMLabel          ; Jump if greater than to myFirstASMLabel
+
+    mov byte [done], 1
+
+    mov eax,4            ; Put magic # for system call sys_write into eax
+    mov ebx,1            ; Prepare arg 1 of sys_write, 1 - file descriptor of stdo
+    mov ecx,hello        ; Prepare arg 2, reference to string hello
+    mov edx,helloLen     ; Prepare arg 3, string length, no deref. b/c constant 
+    int 80h              ; Call the kernel
+;
+
+myFirstASMLabel:
+    mov eax,1            ; The system call for exit (sys_exit)
+    mov ebx,0            ; Exit with return code of 0 (no error)
+    int 80h
+