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: cmp cx,[parhossz] je ascii_vege add ax,[ebx+ecx] sub ax,30h mov dx,0Ah mul dx inc ecx jmp ascii_loop ascii_vege: mov [parameter],ax ;-------------------------------------- mov edx,parhossz mov ecx,ebx mov ebx,1 mov eax,4 int 80h ;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] sub cx,1h feltolt: mov byte [szamok+ecx],1h ;Feltetelezzuk minden szamrol, hogy prim loop feltolt ;-------------------------------------- ;Szita mov ecx,2h mov ebx,ecx szita_loop: cmp bl,[parameter] ja kov_prim mov byte [szamok+ebx],0h add ebx,ecx kov_prim: inc ecx cmp cl,[parameter] ja szita_vege cmp byte [szamok+ecx],1h je beallit jmp kov_prim beallit: mov ebx,[szamok+ecx] mov ecx,ebx jmp szita_loop szita_vege: ;-------------------------------------- ;A primek konvertalasa ascii-va mov ecx,0 mov byte [iterator],0 ascii_loop2: cmp cx,[parameter] je ascii_vege2 cmp byte [szamok+ecx],1h ; Ha prim call atalakit ;atalakitjuk es beirjuk a kiszoveghez inc ecx jmp ascii_loop2 ascii_vege2: ;-------------------------------------- mov edx,kiszoveg mov ecx,iterator mov ebx,1 mov eax,4 int 80h mov ebx,0 mov eax,1 int 80h ;Atalakit atalakit: push ebp mov ebp,esp mov eax,ecx xor ebx,ebx atalakit_loop: cmp al,0h je atalakit_vege mov bl,0Ah div bl add ah,30h mov bl,[iterator] mov [kiszoveg+ebx],ah inc byte [iterator] jmp atalakit_loop atalakit_vege pop ebp ret ;-------------------------------------- ;Megnezi a parameter hosszat, es beirja a parhossz cimkere length: push ebp mov ebp,esp xor ecx,ecx ;ecx kinullazasa mov dl,0h length_loop: cmp dl,[ebx+ecx] je rtrn inc ecx jmp length_loop rtrn: mov [parhossz],cl pop ebp ret ;-------------------------------------- section .data hlpstr db "Hasznalat: ./erasztothenes ",0Ah len equ $-hlpstr section .bss iterator resb 1 kiszoveg resb 65535 parhossz resb 1 parameter resd 1 szamok resb 65536