;================================================================= ; SYSCALLS ; see system functions: /usr/include/asm/unistd_32.h ; see arguments: man 2 ;================================================================= ; COMPILATION ; compiler: nasm -f elf hello.asm ; linker: ld -s -o hello hello.o ;================================================================= ; REGISTERS ; xtended 32b: eax, ebx, ecx, edx ; float: st0, st1 ;================================================================= ; SIZES ; b: byte (8 bits) ; w: word (16 bits) ; dw: dword (32 bits) ; q: quadwords (64 bits) ;================================================================= ; SPECIAL ; $: end of variable address ;================================================================= ; ARGUMENTS ; use :eax, ebx, ecx, edx, esi, edi, ebp ; or: eax et ebx contient l'adresse de la liste ; input args: found in eax (nb args), ; ebx (program name ie arg 0), ecx (arg 1) section .data msg: db 'hello world',10 ; declare msg msgLen: equ $-msg section .bss ; variables, reserving memory section .text global _start _start: ;kernel write mov eax,4 ; arg 1: syscall write id mov ebx,1 ; arg 2: file descriptor (standard output) mov ecx,msg ; arg 3: msg location mov edx,msgLen ; arg 4: msg length int 80h ; kernel call ;kernel exit mov eax,1 ; argument 1: syscall 'exit' id mov ebx,0 ; argument 2: exit code 0 int 80h ; kernel call