elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  FASM numeros primos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: FASM numeros primos  (Leído 3,063 veces)
Leyer


Desconectado Desconectado

Mensajes: 786


leyer@elhacker.net


Ver Perfil WWW
FASM numeros primos
« en: 12 Enero 2012, 02:49 am »

Bien practicando ASM se me ocurrio hacer un prorama para determinar los numeros primos menores al 900
Código
  1. format PE console
  2. include 'win32ax.inc'
  3. entry start
  4. .data
  5.        sqrt dd 0  ;raiz
  6.        msg db "%d primo",13,10,0
  7.        count dd 10b;
  8. .code
  9.     start:
  10.          bucle:
  11.                stdcall isPrime,[count]
  12.                 .if edx <> 0 |  eax= 1
  13.                     push [count]
  14.                     push msg
  15.                     call [printf]
  16.                     add esp,8
  17.                 .endif
  18.              inc [count]
  19.              cmp [count],1110000100b
  20.              je _wait
  21.              jne bucle
  22.     proc _sqrt,firshValue,secondValue
  23.           mov edx,0     ;EDX = 0
  24.           mov eax,[firshValue]  ;valor A
  25.           mov ebx,[secondValue] ;valor B
  26.           div ebx ;EAX=A/B
  27.           ret
  28.     endp
  29.     proc isPrime,value
  30.           stdcall _sqrt,[value],2 ;div
  31.           mov [sqrt],eax ;sqrt = EAX
  32.           mov ecx,2 ; index
  33.           _loop:
  34.                stdcall _sqrt,[value],ecx ;div
  35.                inc ecx ;index++
  36.                .if edx = 0 ;resto == 0
  37.                    mov edx,0
  38.                    ret
  39.                .endif
  40.                cmp ecx,[sqrt];
  41.                jne _loop
  42.                ret
  43.       endp
  44. _wait:
  45.       invoke Sleep,-1 ;pause
  46. section ".idata" import data readable writable
  47.   library msvcrt,"msvcrt.dll",kernel32,"kernel32.dll"
  48.   import kernel32,Sleep,"Sleep"
  49.   import msvcrt,printf,"printf"

la pregunta es como se puede mejorar?

un saludo.


« Última modificación: 13 Enero 2012, 02:02 am por Leyer » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python 2.6] Funcion generadora de Numeros primos (5.761.455 primos en 19 seg)
Scripting
katas 2 9,537 Último mensaje 10 Marzo 2010, 01:50 am
por Novlucker
NUMEROS PRIMOS
Programación C/C++
alviera 4 5,698 Último mensaje 7 Diciembre 2010, 06:39 am
por N0body
¿numeros aleatorios ASM(fasm)?
ASM
Xorcked 3 3,522 Último mensaje 29 Noviembre 2013, 01:09 am
por Karcrack
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines