Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: kch_l en 5 Noviembre 2010, 02:37 am



Título: Raiz cuadrada exacta
Publicado por: kch_l en 5 Noviembre 2010, 02:37 am
Un profesor que me da clases me reto a hacer un programa en ensalmblador del 8086 el cual leyera un numero de 16 bits, y a este le sacara raiz cuadrada, pero con punto decimal, pude hacerlo pero para numeros del 1 al 999 y redondeado, porque no tengo idea de como se hace con punto decimal, si alguien me puede dar algun tip se lo agradeceria :D


Título: Re: Raiz cuadrada exacta
Publicado por: Space.Medafighter.X en 21 Enero 2011, 01:10 am
Puedes usar las instrucciones FPU para obtener la raiz cuadrada con punto decimal de la siguiente forma :

Código:
fld qword[x]
fsqrt
fst qword[x]

Siendo "x" :

Código:
x dq 10f 

Ejemplo :

Código:
format PE console
include 'win32ax.inc'
section '.code' readable writeable executable
x dq 10f
entry $
fld qword[x]
fsqrt
fst qword[x]
invoke printf,"%f",double[x]
invoke ExitProcess,0
section '.idata' import data readable
library msvcrt,'msvcrt.dll',kernel32,'kernel32.dll'
import msvcrt,printf,'printf'
import kernel32,ExitProcess,'ExitProcess'


Título: Re: Raiz cuadrada exacta
Publicado por: Иōҳ en 21 Enero 2011, 01:26 am
Código
  1. C70302000000 mov dword ptr [ebx], 00000002
  2. DB03 fild dword ptr [ebx] ST(0)=2
  3. D9FA fsqrt ST(0)=1,41421356...
  4.