rendered paste bodysection .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
;;;;; Feltoltom "szamok" cimkeju memoria terulet ertekeit a parameterben kapott szamig
mov ecx,0
feltolt:
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(minden bajt 1h-ra allitva)
;;;;; A szamokat ugy reprezentalom, hogy az n. bajt jelentese az, hogy az n. szam prim-e
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-1],0h ;beallitjuk, hogy a szam nem prim
jmp szita2
;megkeresi a kovetkezo primet es beallitja ebx erteket
kereses:
inc ebx
cmp byte [szamok+ebx-1],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 resb 65535
parameter resb 5
parhossz resb 1