Ensamblador - potenciacion en ensamblador!

 
Vista:

potenciacion en ensamblador!

Publicado por pablo (1 intervención) el 23/04/2005 17:07:21
hola a todos, por favor alguien me puede decir como realizar potenciacion con ensamblador.

muchas gracias.
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:potenciacion en ensamblador!

Publicado por Nadie (3 intervenciones) el 27/04/2005 00:03:54
potenciación Matemática? mueva al cx la cantidad de veces que desea elevar el número, luego haga una etiqueta... bueno bueno algo así:
2 a la 3
mov ax
mov cx,3
label:
mul ax,ax
loop cx

o era algo así...
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

este sirve creo

Publicado por loco (1 intervención) el 13/05/2005 03:30:38
3^3=27

mov eax, 3
mov ecx, 3
mov edx, eax
dec ecx
siguiente:
mul eax, edx
loop siguiente
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:potenciacion en ensamblador!

Publicado por Ge-ergon (2 intervenciones) el 01/05/2005 07:38:02
Hola!

Puedes utilizar la unidad de punto flotante (287) o superior.
En este caso me refiero a los llamados números reales, con variables tipo IEEE 8 o IEEE 10, que se son de 64 y 80 bits respectivamente.

Primero a la teoria:
x^y = T
ln x^y = ln (T)
y * ln (x) = ln (T)
e * (y * ln (x)) = e * ln (T)
e * (y * ln (x)) = T = x^y

En este caso no existe en las instrucciones de FPU funciones tales comologaritmo natural o Exponencial. Pero si exiten otros funciones que mediante despeje se puede realizar una función de tipo log (x).

Para favorecer la fórmula hagamos:
x^y = T
log2 x^y = log2 (T)
y * log2 (x) = log2 (T)
2^[y * log2 (x)] = 2^[log2 (T)]
2^[y * log2 (x)] = T

Los registros del FPU estan ligados entre si en forma de pila y son de 80 bits.Te adjunto una prueba realizada para las intrucciones del FPU, e implementar la función de potenciación. Aunque tambien, si deseas, puedes realizar multiplicaciones multiples pero esta vez con los registros e intrucciones del chip 8087+.
{Compilado con Borland Pascal 7.0}
program exp;
{$N+}
{$E-}
var vGeneral:extended;

procedure power (x,y:extended); assembler;
asm
fld x
fld y
fyl2x
fld st
frndint
fsub st(1),st
fxch st(1)
f2xm1
fld1
fadd
fscale
fstp st(1)
fstp vGeneral
end;

begin
power (2,3);
writeln (vGeneral);
end.
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:potenciacion en ensamblador!

Publicado por Ge-ergon (2 intervenciones) el 03/05/2005 03:09:08
Hola!
Te comparto un enlace a un página muy buena sobre el chip
de la unidad de punto flotante.
http://www.website.masmforum.com/tutorials/fptute/index.html
El capitulo 11 tiene explicado la función de potenciación.

Puedes buscar otras páginas de referencia sobre los códigos
de operación (instrucciones) del FPU, para conocer el manejo de cada uno de ellos.

Muchas gracias por su tiempo!
Att: 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