汇编语言开方程序

来源:百度知道 编辑:UC知道 时间:2024/06/24 15:18:39
用减奇数法做一个汇编语言的开方程序,一定要是减奇数法的汇编语言啊!先给10分,成后加分,可以编程的时候有点问题,我自己处理~

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
没有整理,不好意思,不过功能应该能实现,使用了两个子程序

命题:从1开始,连续 n 项,奇数等差数列求和,可以得到 n^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 ;修改为