ep db 'E prim',0
np db 'Nu e prim',0
nr dd 4 ;numarul care se va verifica
start:
mov eax, ep ;pentru inceput baga in eax offset-ul mesajului "E prim"
cmp [nr], 4 ;e numarul mai mic decat 4?
jb @msg ;daca da, atunci e prim, sari la mesajul cum ca "E prim"
mov eax, [nr]
mov edx, 0
mov ecx, 2 ;ecx:=2, va lua valori de la 2 la (nr div 2)
div ecx
mov ebx, eax ;EBX := nr div 2
@loop:
mov eax, [nr]
mov edx, 0
div ecx ;nr div ECX
cmp edx, 0 ;restul impartirii = 0 ?
je @nuE ;inseamna ca are divizori, deci nu e prim, sari la @nuE
inc ecx
cmp ecx, ebx ;a ajuns ECX la (nr div 2) ?
jb @loop ;ecx < ebx? [ebx e nr div 2]... nu?sari inapoi la @loop
mov eax, ep ;daca a ajuns aici, atunci inseamna ca e prim
jmp @msg ;sari direct la mesaj
@nuE:
mov eax, np ;daca a ajuns aici, inseamna ca nu e prim
@msg:
push 0
push eax
push eax
push 0
call [MessageBox]
push 0
call [ExitProcess]
.end start