急求 汇编代码 f(x)=ax^2+bx+c

作者在 2010-05-08 14:39:05 发布以下内容
 我想知道f(x)=ax^2+bx+c 求x。。。 用汇编编写的代码。。。。望高手指点。。
默认分类 | 阅读 774 次
文章评论,共5条
debroa723
2010-05-08 15:25
1
整形数据<br />
int a=10,b=2,c=4,x=3,y=0;<br />
&nbsp; &nbsp; &nbsp; &nbsp; _asm<br />
&nbsp; &nbsp; &nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mov&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;eax,dword ptr [a] <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imul&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;eax,dword ptr [x] <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imul&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;eax,dword ptr [x] <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mov&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;ecx,dword ptr <b> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imul&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;ecx,dword ptr [x] <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; add&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;eax,dword ptr [c] <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; add&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;eax,ecx<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mov&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;dword ptr[y], eax<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
浮点数据<br />
double a=10.0f,b=2.0f,c=4.0f,x=3.0f,y=0.0f;<br />
&nbsp; &nbsp; &nbsp; &nbsp; _asm<br />
&nbsp; &nbsp; &nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fld&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;qword ptr [a] <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fmul&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;qword ptr [x] <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fmul&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;qword ptr [x] <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fld&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;qword ptr <b> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fmul&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;qword ptr [x] <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; faddp&nbsp; &nbsp;&nbsp; &nbsp; st(1),st <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fadd&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;qword ptr [c] <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fstp&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;qword ptr [y] <br />
&nbsp; &nbsp; &nbsp; &nbsp; }
hgqcobe(作者)
2010-05-08 15:44
2
我想要的是&nbsp;&nbsp;求x的&nbsp;&nbsp;代码。。。不知道怎么实现。。
debroa723
2010-05-08 20:13
3
那你应该<br />
ax^2+bx+c=0&nbsp;&nbsp;求x<br />
不然,y不定如何求出x的值。 <br />
一元二次方程的求根公式为<br />
x=[-b±√(b^2-4ac)]/(2a)。<br />
C++代码<br />
x1 = (sqrt( (b*b-4*a*c) ) -b)/(2*a);<br />
x2 = -(sqrt( (b*b-4*a*c) ) +b)/(2*a);<br />
至于汇编代码,你可以将上面的用C++代码实现,在VS下<br />
进入调试后察看反汇编,会得到你想要的汇编代码,或是给你一些提示。
hgqcobe(作者)
2010-05-08 21:56
4
恩 的确如此。。不过这个好像要判断有没有解。。有几个解、、、去其实想要的算法是有循环的思想。。。比如 x=A是其中的一个解。。我要是在A右边取一个点x=B假如值大于0,在取x=0和x=B的中点x=C的值看是大于还是小于0..这样循环取中点。。直到接近x=A...............该怎么样写代码啊。。。。<img src="image/face/22.gif" class="face">
debroa723
2010-05-09 14:54
5
不管什么情况,都有解,无非是实根虚根的问题:<br />
如果(b*b-4*a*c)&lt;0 则为虚根,取它的绝对值去开平方,得到的数加±符号并除以(2*a)就是要求的虚根的虚部,要加一个“i”在后面,另一部分则是实部。<br />
如果(b*b-4*a*c)&gt;0 则有二个实根&nbsp; &nbsp;&nbsp; &nbsp;<br />
如果(b*b-4*a*c)== 0 则有一个实根&nbsp; &nbsp;&nbsp;&nbsp;-b/(2*a)<br />
你说的循环算法是不使用求根公式情况下使用的一种穷举搜寻求根方法,有点象猜商品价格,高了低了来调整x的值,根据y大于0还是小于0来判定高了低了。但这种方法无法求出虚根。
游客请输入验证码
浏览2671次
文章分类