Raiz cuadrada exacta

Iniciado por kch_l, 5 Noviembre 2010, 02:37 AM

0 Miembros y 1 Visitante están viendo este tema.

kch_l

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
BAZINGA!!!! I don't care

Space.Medafighter.X

Puedes usar las instrucciones FPU para obtener la raiz cuadrada con punto decimal de la siguiente forma :

fld qword[x]
fsqrt
fst qword[x]


Siendo "x" :

x dq 10f

Ejemplo :

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'

Иōҳ

#2
Código (asm) [Seleccionar]

C70302000000 mov dword ptr [ebx], 00000002
DB03 fild dword ptr [ebx] ST(0)=2
D9FA fsqrt ST(0)=1,41421356...
Eres adicto a la Ing. Inversa? -> www.noxsoft.net