求助!!程序
请帮忙看一下下面的程序:功能是降(1AH)指向的32位长整数开平方,结果为16位数,送入24H单元.用的公式是牛顿迭代法.Xn+1=1/2(a/Xn+Xn),a为原来的被开方数.Xn为平方根.
SQR: LD 20H,[1AH] ;取被开方数
LD 22H,2[1AH]
NORML 20H,26H ;规格化,移位次数放在26H单元
JE SQR3 ;?为什么在这里跳转?什么和什么相等?
CMPB 26H,#16 ;移位次数和16进行比较
JLE SQR1 ;为什么小于等于就跳转
LD 24H,#0FFH ;下面两句表示什么意思
SJMP SQR2
SQR1:
SHRB 26H,#1 ;这两句又表示什么?
LD 24H,#OFFFFH
SHR 24H,26H
SQR2:
LD 20H,[1AH] ;取被开方数
LD 22H,2[1AH]
CMP 22H,24H ;24H中为上次计算结果Xn
JC SQR3 ;为什么这样比较就可以?
DIVU 20H,24H ;a/Xn
CMP 20H,24H ;判断结果是否相等
JC SQR3 ;大于等于跳转?
CLR 26H ;清移位次数
ADD 24H,20H ;Xn+a/Xn
ADDC 26H,0 ;干吗还要加上进位位?
SHRL 24H,#1 ;除以2,得到1/2(Xn+a/Xn)
SJMP SQR2
SQR3:
RET
非常感谢!
发表时间:2003年5月9日15:38:51