# Bardzo prosty, kompletny program 
# w języku assemblera i386
# po rozpoczęciu pracy wypisuje napis "Hej!\n" i kończy pracę

# _start jest rozpoznawaną przez program
# łączący nazwą, od której zaczyna się
# wykonanie programu
.section        .rodata
TXT:
	.string "Hej!\n"
.text
.globl _start
_start:
# przygotowujemy parametry dla wywołania systemowego write
# w %eax umieszczamy kod wywołania write (tzn. 4)
	movl $4,%eax
# w %ebx umieszczamy pierwszy argument, (deskryptor pliku,
# jako że chcemy pisać do standartowego wyjścia jest to 1)
	movl $1,%ebx
# w %ecx jest adres tekstu do wypisania
	movl $TXT,%ecx
# w %edx ilość bajtów do wypisania
	movl $5,%edx
# teraz wywołanie systemowe
	int $0x80

# przygotowujemy się do zakończenia 
# pracy
# w %eax umieszczamy kod wywołania systemowego exit (tzn. 1)
	movl $1,%eax
# w %ebx umieszczmy kod zakończenia, 0 oznacza brak błędów
	movl $0,%ebx
# wreszcie właściwe wywołanie systemowe
	int $0x80
foo:
	jmp foo
