Board logo

标题: 用f240汇编怎么求根号? [打印本页]

作者: ljp    时间: 2003-9-28 11:05

;=======================SQRT开方子程序===================
;算法采用牛顿迭代公式:X=SQRT(c)   ==>   Xk=[Xk+(C/Xk)]/2, Xk初值为512
;p1为待开方数的高16位
;p2为待开方数的低16位
;p3为初值
;p4为循环次数
SQRT            .macro  p1,p2,p3,p4,p5
                LDP     #4
                MAR     *,AR3
                LAR     AR1,p1                  ;保留原开方数高16位
                LAR     AR2,p2                  ;保留原开方数低16位
                LAR     AR3,p4                  ;循环次数
SQRTING:p5:
                ;-----C/Xk
                LACC    p1,16                    
                OR      p2
                SFL
                SACH    p1
                SACL    p2
                LACC    p1
                rpt     #15                     
                subc    p3
                sacl    p1                      ;p1为商的高16位
                xor     p1
                or      p2
                rpt     #15
                subc    p3
                sacl    p2                      ;p2为商的低16位
                LACC    p1,16
                OR      p2
                ADD     #1                      ;四舍五入
                SFR
                ;-----(C/Xk)+Xk
                ADD     p3
                ;-----[(C/Xk)+Xk]/2
                SFR
                SACL    p3                      ;p3即为解
                SAR     AR1,p1                  ;还原待开方数的高16位
                SAR     AR2,p2                  ;还原待开方数的低16位
                BANZ    SQRTING:p5:
                .endm
作者: long    时间: 2003-10-12 15:43     标题: 用f240汇编怎么求根号?

用f240汇编怎么求根号?
作者: wslabc@163.net    时间: 2003-10-12 15:43

受益非浅,谢谢了!不过,我听说用rpt容易导致中断出错,能改一下最好了!!我以前用的是从1开始商,计算一个值最多需要16*4=64次,现在看来简单多了,谢谢了




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0