(可能有用的算法:用减奇数次数的方法,求一个数的近似平方根,这个平方根是一个整数。如求 17 的平方根,可以用 17 相继减去奇数 1、3、5、7、…,当结果为负数或 0 时停止,即:17-1-3-5-7-9<0,可以看出,17 在减去 5 次奇数后结果变为负数,可以近似认为 17 的平方根在 4 与 5 之间。25-1-3-5-7-9=0,25 的平方根为 5)
DATAS SEGMENT
yes db 'YES',0dh,0ah,24h
no db 'NO',0dh,0ah,24h
x dw 1
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
mov bx,x
mov cx,0 ;存根
mov dx,-1 ;存2(cx)-1
cmp bx,1 ;如果x<1,明显不属于数列
jl disno
rotate:
inc cx
add dx,2
sub bx,dx
cmp bx,0
jg rotate
add bx,dx ;负数,回溯
test bx,01h ;奇数属于数列
jz disno
lea dx,yes
jmp display
disno:
lea dx,no
display:
mov ah,9
int 21h
MOV AH,4CH
INT 21H
CODES ENDS
END START