Created
January 3, 2012 16:06
-
-
Save cccaldas/1555516 to your computer and use it in GitHub Desktop.
assembly hello world
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ; 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) | |
| _syscall: | |
| int 0x80 ;system call | |
| ret | |
| _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 "Boi boi boi",0xa ;our dear string | |
| len equ $ - msg ;length of our dear string |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment