导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→求助!!程序[zm63377]

 *第11678篇: 求助!!程序

  
楼 主:zm63377 2003年5月9日15:38
 求助!!程序
请帮忙看一下下面的程序:功能是降(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     

非常感谢!
   


       

    

  

  
2楼:zm63377 2003年5月9日15:53
 哪位热心的大侠花点时间帮我看看,我实在搞不明白。

>>>>>>对该主题发表你的看法

本主题贴数2,分页: [第1页]


[上一篇主题]:为什么会这样了,多路开关有问题?

[下一篇主题]:RTX51tiny问题,有空帮我看看吧