牛顿迭代法 求根号C C语言和汇编语言实现时间:2022-04-13 01:10:10#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的结果标志位 FSTSW mem//保存状态字的值到mem MOV AX,mem//保存状态字的值到AX SAHF//SAHF 将AH 寄存器内容送FLAGS 的低字节 //以下将所有数出栈 FSTP temp2 FSTP temp2 FSTP temp2 FSTP temp2 JA newton//状态字大于0继续迭代ending: } printf("开平方后的结果为:%e/n",xn); return 0;} 实现牛顿迭代法 求根号C C语言和汇编语言实现