Return to Snippet

Revision: 24496
at March 2, 2010 16:09 by sukantahazra

Initial Code
; Hello World in assembly for mac
; nasm -f macho hello.asm
; ld -e _start -o hello hello.o
section     .text
 global _start                       ;must be declared for linker (ld)

     int     0x80            ;system call

_start:                         ;tell linker entry point

     push    dword len       ;message length
     push    dword msg       ;message to write
     push    dword 1         ;file descriptor (stdout)
     mov     eax,0x4         ;system call number (sys_write)
     call    _syscall        ;call kernel

                             ;the alternate way to call kernel:
                             ;push   eax
                             ;call   7:0

     add     esp,12          ;clean stack (3 arguments * 4)

     push    dword 0         ;exit code
     mov     eax,0x1         ;system call number (sys_exit)
     call    _syscall        ;call kernel

                             ;we do not return from sys_exit,
                             ;there's no need to clean stack
section .data

msg     db      "Hello, world!",0xa     ;our dear string
len     equ     $ - msg                 ;length of our dear string

Initial URL

Initial Description

Initial Title
Assembly code (NASM) for mac - hello world

Initial Tags

Initial Language