# 80h.S
.data
ciag: .string "$$$$$$$$$$$$$$" # ciąg piętnastu dowolnych znaków
len = . - ciag # . - = strlen()
.text
.global _start
_start:
movl $3, %eax # wczytuje z klawiatury znaki, których
xorl %ebx, %ebx
# liczba nie powinna przekroczyć tej w rejestrze EDX
movl $ciag, %ecx # jeśli wprowadzimy jednak więcej, nadmiarowe znaki pozostawione
movl $len, %edx # będą w buforze klawiatury, po wykonaniu funkcji
int $80h # w rejestrze EAX umieszczona jest liczba faktycznie
# wprowadzonych znaków włączając klawisz ENTER (znak 0Ah)
movl %eax,%edx
xorl %eax,%eax
incl %eax
incl %ebx
int $80h
#wyjscie
movl $1,%eax # kończy program i wraca do powłoki systemowej
xorl %ebx,%ebx # w rejestrze EBX zwracany jest ewentualny kod błędu
int $80h # lub wartość, którą chcemy przekazać do powłoki