汇编语言高手帮帮忙 解决下菜鸟问题

来源:百度知道 编辑:UC知道 时间:2024/06/18 00:32:05
内存data字单元中存放一个完全平方数,编制一程序求其平方根并存入root字单元中。(提示:从1开始连续i个奇数之和是i的平方值N,如1+3+5+7+9=25,这里i等于5,N等于25)

题意不是很明确呢~补充下哈~

命题:从1开始,连续 n 项奇数等差数列求和,可以得到 n^2。
证明:1 + 3 + 5 + ... + (2n-1) = (1 + (2n-1))*(n/2) = n^2

求解思路:从完全平方数 N 中,依次减去:1、3、5、...,减到0为止,减去了多少次?平方根就是几。

程序的核心部分如下:

MOV AX, [data] ;取来N
MOV BX, 1 ;首项为1
MOV CX, 1
_S_LOOP:
SUB AX, BX
JZ _END ;到0为止
INC BX ;修改为3、5、7...
INC BX
INC CX ;n加1
JMP _S_LOOP ;不停的减
_END:
MOV [root],AX ;保存n

就这些。
这种求平方根的方法,效率很高,远远高于牛顿迭代法。