Bun venit pe SkullBox!

Bine ai venit, Vizitator. Trebuie să te autentifici sau să îţi creezi un cont.
Ai pierdut sau nu ai primit emailul care conţine codul de activare al contului?

Autentifică-te cu numele de utilizator, parola şi precizează durata sesiunii.
  Pagini: [1]
  Imprimă  
Verifica daca un numar e prim  (Vizualizari 926)
Shocker
*

Deconectat Deconectat

Mesaje: 410

WWW
Verifica daca un numar e prim, Iun 15, 2007, 17:02

Cod:

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        
Memorat


Just wake me up when everything's less overwhelming..., btw ShockingSoft is back !
Freakz only
Comics of the day
LeOCruX
*

Deconectat Deconectat

Mesaje: 95

Verifica daca un numar e prim, Iun 15, 2007, 18:13

mi-ai luat-o inainte .... si eu voiam sa fac unu Smile
L.E. Shock.spunemi si mie exista vreo "procedura" prin care se citeste o variabila de la tastatura ? ( ca read in pascal, daca intelegi )
Memorat
DarkByte
*

Deconectat Deconectat

Mesaje: 2441

WWW
Verifica daca un numar e prim, Iun 15, 2007, 19:28

Din cate stiu, in ASM nu exista proceduri pentru citire numere de la tastatura.

Trebuie sa-ti faci o functie care, intr-o bucla, citeste caracterele de la tastatura (adica 0 este codul ASCII 48), verifici de BackSpace, Enter, si pe masura ce citesti cate un caracter (cifra) o adaugi la (sau o scoti din) numar ... cu grija, nu cu adunare Tongue

Bafta
Memorat

Light travels faster than sound. This is why some people appear intelligent until they speak.

Quidquid latinum dictum sit, altum viditur.

SkullAds
Ecspert
ReclAmator
* * * * *
Google AdSense

Gen: Bărbat
Mesaje: Multe

Reclama AdSense,
 

 
   


Pagini: [1]
  Imprimă  
 
Schimbă forumul:  

Ethical hacking and programming community
Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC
Traducerea în limba română © 2006-2007 www.smf.ro