section .text global _start _start: push ebp ;ebp elmentese mov ebp, esp ;esp a verem tetejere mutat mov ebx,[ebp+12] ;az elso argumentum cime ;A parameter atmasolasa a parameter cimkeju teruletre mov ecx,0 par_beolv: cmp ecx,4 je beolv_vege cmp byte [ebx+ecx],0 je beolv_vege mov al,[ebx+ecx] mov [parameter+ecx],al inc ecx jmp par_beolv beolv_vege: mov [parhossz], cl ;cl a string hossza lesz ;;;;; A parameter konvertalasa ASCIIbol 2byteos egesz szamma xor edx,edx ;edx kinullazasa xor ecx,ecx ;ecx kinullazasa mov cl,[parhossz] ;ecx:=parameter hosszaval konv_loop: mov al,[parhossz] sub al,cl push cx mov cl,0Ah mul cl pop cx mov bl,al mov al,[parameter+ecx] push cx mov cl,16h sub al,cl pop cx mul bl add dl,al loop konv_loop xor eax,eax mov al,dl ;;;;; A parameter konvertalasa kesz, az eax regiszterben van mov edx,len mov ecx,msg mov ebx,1 mov eax,4 int 80h ;;;;; Feltoltom "szamok" cimkeju memoria terulet ertekeit a parameterben kapott szamig mov ecx,1 feltolt: mov byte [szamok+ecx-1],cl mov byte [szamok+ecx],1h ;Minden szamrol feltetelezzuk, hogy prim cmp ecx,eax je felt_veg inc ecx jmp feltolt felt_veg: ;;;;; A "szamok" cimkeju memoria terulet feltoltese kesz ;;;;; A szamokat ugy reprezentalom, hogy 1 bajton a szamot abrazolom es a rakove tkezo 1 bajton pedig azt hogy prim vagy nem mov ebx,2h ;incializaljuk ebx kezdeti erteket, 2-t szita: mov ecx,ebx szita2: add ecx,ebx cmp ecx,eax ja kereses mov byte [szamok+ecx],0h ;beallitjuk, hogy a szam nem prim jmp szita2 ;megkeresi a kovetkezo primet es beallitja ebx erteket kereses: inc ebx cmp byte [szamok+ebx],1h je szita jmp kereses ;;;;; A szita befejezodott, a primek a "szamok" cimkeju memoria teruleten vannak pop ebp mov ebx,0 mov eax,1 int 80h section .data msg db "Anyad",0 len equ 5 section .bss kimenet resd 300 szamok resd 65535 parameter resb 5