汇编语言开方程序6
发布网友
发布时间:2023-09-14 09:20
我来回答
共2个回答
热心网友
时间:2024-11-26 19:20
求证: n 项奇数的和“1 + 3 + 5 + ... + (2n-1)”,是 n^2。
证明: 这是等差数列的和。
等差数列之和=(首项+末项)× (项数 / 2)
即: 1 + 3 + 5 + ... + (2n-1) = (1 + (2n-1)) * (n/2)
= n^2
编程思路:
从一个数字 M (包含一个完全平方数 N + e) 中,依次减去:1、3、5、...,直到不够减为止,减去了多少次?平方根就是几。
程序的核心部分如下:
MOV AX,[data] ;取来M
MOV BX,1 ;首项为1
MOV CX,1
_S_LOOP:
SUB AX,BX
JC _END ;有借位为止
INC BX ;修改为3、5、7...
INC BX
INC CX ;n加1
JMP _S_LOOP ;不停的减
_END:
MOV [root],CX ;保存n
就这些。
这种求平方根的方法,效率很高,远远高于牛顿迭代法。
热心网友
时间:2024-11-26 19:21
data segment
n dw 81
pfg dw ?
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov ax,n
call sqrsub
mov pfg,bx
mov ah,4ch
int 21h
sqrsub proc near
call abssub
mov bx,0
mov cx,1
sqr1:
sub ax,cx
jc sqr2
inc bx
add cx,2
jmp sqr1
sqr2:
ret
abssub proc near
and ax,ax
jns abs1
neg ax
abs1:ret
abssub endp
code ends
end start
没有整理,不好意思,不过功能应该能实现,使用了两个子程序