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 ascii_loop: sub byte [ebx+ecx], 30h add al,[ebx+ecx] jno nincs_tulcsord add ah,1h nincs_tulcsord: mov dx, 0Ah ; 10-el szorzunk mindig mul dx inc cl cmp cl, [parhossz] je ascii_vege jmp ascii_loop ascii_vege: mov [parameter], ax cmp word [parameter], 0h je help ;------------------------------------- call itoa jmp help ;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 itoa_loop: ;pusha ;mov edx,len ;mov ecx,hlpstr ;mov ebx,1 ;mov eax,4 ;int 80h ;popa mov dx,0h mov bx, 0Ah div bx ; ax/=10 mov [szam+ecx], dl ;buffer[ecx]=n%10 add byte [szam+ecx],30h ;pusha ;mov edx,len ;mov ecx,hlpstr ;mov ebx,1 ;mov eax,4 ;int 80h ;popa inc ecx cmp ax,0h jg itoa_loop mov edx,1 mov ecx,szam mov ebx,1 mov eax,4 int 80h 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