section .text global _start _start: pop ecx ;argc pop ebx ;a program neve pop ebx ;az elso parameter ;Ha nincs parameter, kiirjuk a helpet cmp ecx, 1 je help jmp nincs_help ;------------------------------------ ;Help kiiratasa help: mov edx,len mov ecx,hlpstr mov ebx,1 mov eax,4 int 80h mov ebx,0 mov eax,1 int 80h ;------------------------------------- nincs_help: ;A parameter konvertalasa ASCII-bol ketbajtos egesz szamma call length xor ecx, ecx xor eax, eax mov dx, 0Ah ; 10-el szorzunk mindig add ax,[ebx+ecx] ascii_loop: sub byte [ebx+ecx], 30h mul dx inc cl add ax, [ebx+ecx] cmp cl, [parhossz] jnl ascii_vege jmp ascii_loop ascii_vege: mov [parameter], ax cmp word [parameter], 0h je help ;------------------------------------- call itoa ;Feltolti a "szamok" cimkeju teruletet ;Az n. bajt az n. szamot reprezentalja, erteke 0h vagy 1h attol fuggoen, hogy a szam prim vagy nem xor ecx, ecx mov cx, [parameter] feltolt: mov byte [szamok+ecx],1h ;Feltetelezzuk minden szamrol, hogy prim loop feltolt ;-------------------------------------- ;Szita mov byte [szamok], 0h ; 0 nem prim mov byte [szamok+1], 0h ; 1 nem prim mov ecx, 2 ; i=2 szita_loop: mov edx, ecx add edx, ecx ; j = i+i szita_loop2: mov byte [szamok+edx], 0h ; szamok[j]=0 add edx, ecx ; j+=i cmp edx, [parameter] jl szita_loop2 mov edx, ecx inc edx ; j=i+1 szita_loop3: cmp byte [szamok+edx], 1h je szita_loop3_end inc edx cmp edx, [parameter] jl szita_loop3 szita_loop3_end: mov ecx, edx ; i=j cmp ecx, [parameter] ;iszam string itoa: pusha mov ecx, 0h ;i=0 mov ebx, 0h itoa_loop: push eax mov bx, 0Ah ; dl=10 div bx ; ax/=10 mov [szam+ecx], dl ;buffer[ecx]=n%10 pop eax mov bx, 0Ah div bx ; eax/=10 mov bx, ax mov eax, 0h mov ax, bx inc ecx cmp ax, 0h jne itoa_loop dec ecx itoa_loop2: push ecx add byte [szam+ecx], '0' mov edx, 1 mov ebx, szam add ebx, ecx mov ecx, ebx mov ebx, 1 mov eax, 4 int 80h pop ecx dec ecx cmp ecx, 0h jge itoa_loop2 popa ret section .data hlpstr db "Hasznalat: ./erasztothenes ",0Ah len equ $-hlpstr section .bss parhossz resb 1 parameter resd 1 szamok resb 65536 szam resb 7