segment .data textas db "kvadratas yra: ",0 segment .bss ; bss segmentas neapibrezhtiems duomenims input resd 1 ; rezervuojam vieta vienam doublewordui (4 baitai) segment .text ; texto segmentas kur prasideda programos operacijos global _start ; defaultine funkcija kuria ELF linkeris ishkviecia _kernel: ; mes naudosim procedura interaptams nes jos metu bus sukuriamas naujas stekas int 80h ret _start: ; read() push dword 15 ; buferio dydis push dword input ; buferis push dword 0 ; STDIN_FILENO numeris mov eax,3 ; read() numeris call _kernel ; kvieciam funkcija add esp, byte 12 ; ishvalom steka kad galima butu panaudot kitas f-jas ; ---------- ATLIEKAM SHIEK TIEK ARITMETINIU VEIKSMU --------; mov eax,[input] imul eax ; edx:eax = eax*eax mov ebx,eax ; write() -- writinam inputa push dword 10; buferio dydis push dword input ; zhinutes adresas push dword 1 ; pushinam STDOUT_FILENO kuris lygus 1 mov eax,4h ; write() syscallas == 4 call _kernel ; kvieciam funkcija add esp, byte 12 ; ishvalom steka ; write() -- writinam "kvadratas yra: " push dword 14; buferio dydis push dword textas ; zhinutes adresas push dword 1 ; pushinam STDOUT_FILENO kuris lygus 1 mov eax,4h ; write() syscallas == 4 call _kernel ; kvieciam funkcija add esp, byte 12 ; ishvalom steka ; write() -- writinam kvadrata push dword 10; buferio dydis push dword ebx ; zhinutes adresas push dword 1 ; pushinam STDOUT_FILENO kuris lygus 1 mov eax,4h ; write() syscallas == 4 call _kernel ; kvieciam funkcija add esp, byte 12 ; ishvalom steka ; exit(0) push dword 0 ; pirmas ir paskutinis argumentas yr 0 mov eax,1h ; exit() syscallas == 1 call _kernel ; interaptas i kerneli ,kuris vel kviecia exit()