Ensamblador - Lio con la FPU

 
Vista:

Lio con la FPU

Publicado por Zeken (3 intervenciones) el 25/07/2004 17:40:32
Hola, utilizo NASM y programo para DOS a 32 bit. Hace algun tiempo que intento escribir una macro para dibujar una linea que haga el angulo que yo le indique con la horizontal. Me di cuenta de que debia calcular la tangente de ese angulo para ver cada cuantos pixels dibujados en horizontal corresponden a uno en vertical. Pero al intentar calcular la tangente con la FPU me empiezan a surgir problemas: Primero, que la operación ftan no se ensambla, cosa que creo que es muy rara porque con fsin y fcos va bien. Entonces decidí calcular la tangente a partir de seno y el coseno(la tangente de un angulo es igual a el seno del angulo entre el coseno del angulo). Hasta ahi creia que seria bastante sencillo, pero para comprobar el resultado(lo compruebo con el depurador GRDB) me hago unos lios impresionantes porque el resultado se tiene que guardar con coma flotante, pero despues no se como hacer para pasar de coma flotante a decimal(no se si la terminologia es correcta....). Alguien podria explicarmelo? o de lo contrario darme alguna idea, sugerencia u orientación, gracias y perdón si he sido demasiado extenso :P
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Lio con la FPU

Publicado por ge-ergon (18 intervenciones) el 28/07/2004 21:02:49
Hola Zeken!
Lo que se necesita saber es el formato que tiene el tipo de dato de punto
flotante (4 bytes, 8bytes, etc), y la manera de como se interpreta o se decodifica el número.

Estuve realizando unas pruebas mas no logre figurarme como se
codificaba los valores en un dato tipo single.

Tambien se supone que debe de ser asi:
Mantisa, Exponente,Valor real
1) 6508, 0, 6508
2) 6508, 1, 65080
3) 6508, -1, 650.8

Se supone que es de esta forma, pero aplicando esto al formato
de dato single (4 bytes) no logre dar con la solución.
Todo formato tiene un bit para el signo, y el resto se divide en el
exponente y la mantisa.

Lo que podemos hacer es analisar el texto de la Intel
para los chips 287 o 387.

Atentamente: ge-ergon
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Lio con la FPU

Publicado por Zeken (3 intervenciones) el 28/07/2004 21:18:26
El tipo de dato con el que me interesa trabajar es DWORD (8 bytes) y me encontré con el mismo problema que tu, no se que bits corresponden a la mantisa y al exponente. Busqué algunos textos que explicaban el método para hacer la conversión de binario con punto flotante a decimal, pero al intentar hacerlo, no hubo manera de que cuadrase. Y lo de los textos de Intel, podrias mirar de documentarte tu y "postear" lo que encuentres útil? es que no se mucho inglés y despues seguro que me pierdo para encontrarlos :P. Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Lio con la FPU

Publicado por ge-ergon (18 intervenciones) el 02/08/2004 06:00:21
Hola! Zeken

Estuve trantando de figurarme ciertas cosas, en base con el
archivo de la documentación del chip 287 de Intel, pero no
logre dar con la forma de codificación entre el exponente y la
mantisa. Las pruebas que realize eran con el tipo de dato
single (32 bits o 4 bytes).

Lo que se puede hacer es usar la instrucción "FIST", que convierte
el valor de ST en un entero de 16 o 32 bits. Lo que sucede con esta
intrucción, es que por "default" redondea el valor.
Es decir, el número: 54.5 será 55,
y el número 67.234 pasará a ser 67. Si quieres controlar el redondeo
se puede usar alguna comparación entre el primer valor y el segundo
y decidir si decrementar el valor o aumentarlo, por ejemplo.
Mas información aqui:
http://www.clipx.net/ng/iapx86/ng41f4a.php

Si logras dar con la forma en que un número como 77.59 se codifique
en un tipo de dato single o double, por favor informame.
Voy a verificar mas a fondo la documentación del Chip 287.

Atentamente: ge-ergon
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Lio con la FPU

Publicado por Ge-ergon (18 intervenciones) el 25/08/2004 07:30:20
Hola!

Pueden conseguir el código de la calculadora del sistema operativo
MenuetOS y tomarlo como una referencia.

http://www.menuetos.org/download.html
Bajar archivo con fuentes de aplicaciones.
Nombre del archivo CALC.asm
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Nasm ensamblador

Publicado por Esteban (1 intervención) el 20/04/2008 09:43:14
Mira la verdad es que yo ando exactamente igual... no se como se usa la funcion fsin si alguien pudiera ayudarnos!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar