#include<stdio.h> #include<math.h> #include<conio.h> #include<stdlib.h> //xn=(xn+c/xn)/2; //迭代的精度满足|x(n+1)-x(n)|<forcom.停止计算. main(){ float c,xn,xn1,temp,forDiv,temp2; double forCom; short int mem; xn=1.0;//迭代初始值 xn1=0.0; temp=1.0; forDiv=2.0; forCom=0.00001; printf("请输入一个正数:/n"); scanf("%f",&c); _asm{ newton: FLD xn//将xn压栈 FST temp//将栈顶元素,即xn传给temp,栈顶不弹出 FLD c//将变量c压栈 FDIV ST(0),ST(1)// c/xn 赋给 st(0) FADD ST(0),ST(1)//c/xn + xn 赋给 st(0) FLD forDiv//将fordiv压栈 FDIV ST(1),ST(0)//(c/xn + xn)/fordiv 赋给 st(1) FXCH//交换st(0)和st(1) FST xn1//将栈顶元素,传给xn1,栈顶不弹出 FSTP xn//将栈顶元素弹出赋给xn FLD temp//变量temp压栈 FLD xn1//变量xn1压栈 FSUB ST(0),ST(1)//st(0)-st(1)结果赋给st(0) FABS//求st(0)绝对值 FCOM forCom//实数比较 将标志位设置为 st(0) - forCom的结果标志