; hello.asm premier programme en assembleur ; ; assemble : nasm -f elf hello.asm ; assemble avec listing : nasm -f elf -l hello.lst hello.asm ; link: ld -e debut hello.o -o hello ; run: ./hello ; sortie: Hello World SECTION .data ; section pour les données msg: db "Hello World",10 ; la chaîne de caractères à afficher ; 10=code ascii retour à la ligne SECTION .text ; section pour le code global main ; rend le label visible de l'extérieur main: mov ebx,0 mov eax,msg add eax,6 mov bl,[eax] sub bl,0xa mov [eax],bl add eax,2 mov bl,[eax] sub bl,4 mov [eax],bl add eax,2 mov bl,[eax] sub eax,1 mov [eax],bl add bl,1 add eax,1 mov [eax],bl mov edx,0xc ; arg3, nombre de caractères à afficher ; de manière equivalente mov edx,12 mov ecx,msg ; arg2, adresse du premier charactere a afficher mov ebx,1 ; arg1, num de la sortie pour l'affichage ; 1 = sortie standard mov eax,4 ; num. de la commande write ; pour l'interruption 80h int 0x80 ; interruption 80 hex, appel au noyau mov ebx,0 ; code de sortie, 0=normal mov eax,1 ; num. de la commande exit int 0x80 ; interruption 80 hex, appel au noyau