;用减奇数次数的方法,求一个数的近似平方根,这个平方根是一个整数
;如求17的平方根,可以用17相继减去奇数1,3,5,7等等,当结果为负时停止
;即:17-1-3-5-7-9<0
;则17在减去5次奇数后值为负,则认为17的近似平方根在4-5之间,则将4存于ANS中
DATA SEGMENT
NUM DW 80
ANS DW ?
DATA ENDS
STACK SEGMENT PARA STACK
DW 128 DUP(?)
TOP LABEL WORD
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK,DS:DATA
MAIN PROC FAR
START:
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
LEA SP,TOP
LEA SI,NUM
MOV AX,[SI]
MOV BX,1
XOR DX,DX
L0: SUB AX,BX
CMP AX,0
JL L1
INC DX
ADD BX,2
JMP L0
L1: LEA DI,ANS
MOV [DI],DX
ADD DL,30H
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
MAIN ENDP
END START
;如求17的平方根,可以用17相继减去奇数1,3,5,7等等,当结果为负时停止
;即:17-1-3-5-7-9<0
;则17在减去5次奇数后值为负,则认为17的近似平方根在4-5之间,则将4存于ANS中
DATA SEGMENT
NUM DW 80
ANS DW ?
DATA ENDS
STACK SEGMENT PARA STACK
DW 128 DUP(?)
TOP LABEL WORD
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK,DS:DATA
MAIN PROC FAR
START:
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
LEA SP,TOP
LEA SI,NUM
MOV AX,[SI]
MOV BX,1
XOR DX,DX
L0: SUB AX,BX
CMP AX,0
JL L1
INC DX
ADD BX,2
JMP L0
L1: LEA DI,ANS
MOV [DI],DX
ADD DL,30H
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
MAIN ENDP
END START