Na AMD64 tenhle příklad skončí na SIGSEGV, takže kdo by si to chtěl vyzkoušet, tak tady je upravená verze (jen sekce .text):
.section .text
.global _start # tento symbol ma byt dostupny i linkeru
_start:
movq rbx, offset buffer # zapis se bude provadet do tohoto bufferu
mov al, 'a' # kod prvniho zapisovaneho znaku
loop:
mov [rbx], al # zapis znaku do bufferu
inc al # ASCII kod dalsiho znaku
inc rbx # uprava ukazatele do bufferu
cmp al, 'z' # ma se smycka ukoncit?
jna loop # pokud jsme neprekrocili kod 'z', opakovat smycku
lwrite:
movq rax, sys_write # cislo syscallu pro funkci "write"
movq rdi, 1 # standardni vystup
movq rsi, offset buffer # adresa retezce, ktery se ma vytisknout
movq rdx, 26 # pocet znaku, ktere se maji vytisknout
syscall # volani Linuxoveho kernelu
lexit:
movq rax, sys_exit # cislo sycallu pro funkci "exit"
movq rdi, 0 # exit code = 0
syscall # volani Linuxoveho kernelu