Raíz cuadrada

Anuncio
p+45_sqrt.cpp
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
1 / 1
//===========================================================================
//===========================================================================
// PROGRAMA
: p+45_sqrt.cpp
// FUNCION
: Programa hibrido C++ y Ensamblador (ensamblado en linea)
//
: que calcula la raiz cuadrada de la suma de cuadrados de
//
: dos valores pidiendo valores y dando el resultado en
//
: lenguaje C y haciendo las operaciones en ensamblador.
// REALIZADO POR
: Prof. Juan Juárez Fuentes ( BASADO EN EL LIBRO DE DETMER )
// COMPILADOR EN EL QUE SE EJECUTO: ESTE PROGRAMA CORRIO BIEN EN TURBO C++ 4.5 y BORLAND C++ 3.1,
//
: EN DEVC NO CORRIO (hay que adaptarlo).
// FECHA
: 20100122181242
//===========================================================================
//===========================================================================
#include <iostream.h>
#include <conio.h>
//===========================================================================
//===========================================================================
int main()
{
float valor1;
float valor2;
float raiz;
cout << "
=======================================================================" << endl;
cout << "\t\t\tPROGRAMA QUE CALCULA LA RAIZ CUADRADA"<< endl;
cout << "\t\t
DEL CUADRADO DE DOS VALORES DE PUNTO FLOTANTE" << endl;
cout << "
=======================================================================" << endl << endl;
cout << "\t\t\t\tPrimer valor? ";
cin >> valor1;
cout << "\t\t\t\tSegundo valor? ";
cin >> valor2;
//-----------------------------------------------------------------------__asm{
// En TURBO C++ 4.5 corre asi "__asm{" o se puede bajar la llave. Pero con BORLAND C++ 3.1 sólo se ejecuta asi "__asm{",
fld
valor1
// valor1 en ST(0), que es el tope de la pila.
fld
st
// valor1 en ST(0) y ST(1), porque el contenido de ST(0) es empujado en la pila.
fmul
// valor1 * valor1 en ST(0), saca de la pila a ST(0) y ST(1) los multiplica y el reultado lo pone en la pila que es ST(0).
fld
valor2
// valor2 en ST(0), que es el tope de la pila y (valor1 * valor1 en sT(1)).
fld
st
// valor2 en ST(0) y ST(1), porque el contenido de ST(0) es empujado en la pila.
fmul
// valor2 * valor2 en ST(0), saca de la pila a ST0 y ST1 los multiplica y el reultado lo pone en la pila que es ST(0).
fadd
// suma de los cuadrados en ST(0), saca ST(0) y ST(1) de la pila, suma los valores y el resultado se pone en la pila o sea en ST(0).
fsqrt
// raiz cuadrada de la suma de los cuadrados en ST(0), porque se remplaza el contenido de ST(0) por su raiz cuadrada.
fstp raiz
// Poner el resultado, porque copia en memoria el contenido de ST(0) que es el tope de la pila y al mismo tiempo se saca de la pila.
}
//----------------------------------------------------------------------cout << "\n\t\t\t\tEl resultado es: " << raiz << endl ;
getch ();
return 0;
}
//===========================================================================
//===========================================================================
//===========================================================================
February 06, 2013
Crimson Editor
Descargar