Hello World Assembly

Published: 2019-08-04, Updated: 2019-08-04

On linux using nasm

hello.asm

section .data
	hello:     db 'Hello world!',10    ; 'Hello world!' plus a linefeed character
	helloLen:  equ $-hello             ; Length of the 'Hello world!' string
	                                   ; (I'll explain soon)

section .text
	global _start

_start:
	mov eax,4            ; The system call for write (sys_write)
	mov ebx,1            ; File descriptor 1 - standard output
	mov ecx,hello        ; Put the offset of hello in ecx
	mov edx,helloLen     ; helloLen is a constant, so we don't need to say
	                     ;  mov edx,[helloLen] to get it's actual value
	int 80h              ; Call the kernel

	mov eax,1            ; The system call for exit (sys_exit)
	mov ebx,0            ; Exit with return code of 0 (no error)
	int 80h

compile on x64

$ nasm -f elf64 hello.asm
$ ld -s -o hello hello.o
$ ./hello

compile on i386

$ nasm -f elf hello.asm
$ ld -s -o hello hello.o
$ ./hello

Gradle Bookmarks Como criar compartilhamentos com o samba

Comments