All pastes #756550 Raw Edit

Something

public text v1 · immutable
#756550 ·published 2007-10-31 15:53 UTC
rendered paste body
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

;;;;; 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