Esempio pratico: inversione di una stringa
Da Hacknowledge.
Con le conoscenze che abbiamo maturato finora (syscall, variabili, salti condizionati, operazioni logico-aritmetiche) consideriamo un piccolo esempio che non fa altro che prendere una stringa da stdin, invertire fra loro i caratteri al loro interno e stampare quindi la stringa ribaltata. Il codice è abbastanza commentato e con le conoscenze che abbiamo ora non dovrebbe essere un problema capirlo:
.data // La mia stringa str: .space 30 // Lunghezza di str s_len = .-str // Stringa per il carattere a capo nline: .string "\n" .text .global main main: # Leggo la stringa da stdin (sys_read) movl $3,%eax movl $0,%ebx movl $str,%ecx movl $s_len,%edx int $0x80 # In %edi metto la lunghezza della stringa movl $s_len,%edi loop: # Metto l indirizzo di $str[%edi] in %ecx movl $str,%ecx addl %edi,%ecx # Stampo $str[%edi] su stdout (sys_write) movl $4,%eax movl $1,%ebx movl $1,%edx int $0x80 # Decremento %edi. Una volta arrivato a 0, esco dal ciclo decl %edi cmpl $-1,%edi jne loop # sys_exit(0) movl $1,%eax movl $0,%ebx int $0x80

