音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng)
驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

開平方程序

作者:dianyuan 欄目:單片機
開平方程序
剛學單片機,對以下這個開平方程序不是很理解,哪位大哥能指點一二,說說這個開平方子程序的基本思路,這里先謝了!

四字節(jié)二進制無符號數(shù)開平方(快速)
;入口條件:被開方數(shù)在R2、R3、R4、R5中。
;出口信息:平方根在R2、R3中,整數(shù)部分的位數(shù)為原數(shù)的一半,其余為小數(shù)。
;影響資源:PSW、A、B、R2~R7 堆棧需求: 2字節(jié)
SH4:        
MOV A,R2
ORL A,R3
ORL A,R4
ORL A,R5
JNZ SH40
RET ;被開方數(shù)為零,不必運算
SH40:     
MOV R7,#0 ;左規(guī)次數(shù)初始化
MOV A,R2
SH41:     
ANL A,#0C0H ;被開方數(shù)高字節(jié)小于40H否?
JNZ SQRH ;不小于40H,左規(guī)格化完成
MOV R6,#2 ;每左規(guī)一次,被開方數(shù)左移兩位
SH42:     
CLR C ;被開方數(shù)左移一位
MOV A,R5
RLC A
MOV R5,A
MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
DJNZ R6,SH42 ;被開方數(shù)左移完兩位
INC R7 ;左規(guī)次數(shù)加一
SJMP SH41 ;繼續(xù)左規(guī)
SQRH:     
MOV A,R2 ;規(guī)格化后高字節(jié)按折線法分為三個區(qū)間
ADD A,#57H        ;100H-57H=0A9H(169)
JC SQR2
ADD A,#45H       ;100H-45H=0BBH(187)
JC SQR1
ADD A,#24H        ;100H-24H=0DCH(220)
MOV B,#0E3H ;第一區(qū)間的斜率 (227)
MOV R4,#80H ;第一區(qū)間的平方根基數(shù)(128)
SJMP SQR3
SQR1:    
MOV B,#0B2H ;第二區(qū)間的斜率(178)
MOV R4,#0A0H;第二區(qū)間的平方根基數(shù)(160)
SJMP SQR3
SQR2:     
MOV B,#8DH ;第三區(qū)間的斜率(141)
MOV R4,#0D0H;第三區(qū)間的平方根基數(shù) (208)
SQR3:    
MUL AB ;與區(qū)間基點的偏移量乘區(qū)間斜率
MOV A,B
ADD A,R4 ;累加到平方根的基數(shù)上
MOV R4,A
MOV B,A
MUL AB ;求當前平方根的冪
XCH A,R3 ;求偏移量(存放在R2R3中)
CLR C
SUBB A,R3
MOV R3,A
MOV A,R2
SUBB A,B
MOV R2,A
SQR4:         
SETB C ;用減奇數(shù)法校正一個字節(jié)的平方根
MOV A,R4 ;當前平方根的兩倍加一存入R5R6中
RLC A
MOV R6,A
CLR A
RLC A
MOV R5,A
MOV A,R3 ;偏移量小于該奇數(shù)否?
SUBB A,R6
MOV B,A
MOV A,R2
SUBB A,R5
JC SQR5 ;小于,校正結束,已達到一個字節(jié)的精度
INC R4 ;不小于,平方根加一
MOV R2,A ;保存新的偏移量
MOV R3,B
SJMP SQR4 ;繼續(xù)校正
SQR5:         
MOV A,R4 ;將一個字節(jié)精度的根存入R2
XCH A,R2
RRC A
MOV F0,C ;保存最終偏移量的最高位
MOV A,R3
MOV R5,A ;將最終偏移量的低八位存入R5中
MOV R4,#8 ;通過(R5R6/R2)求根的低字節(jié)
SQR6:         
CLR C
MOV A,R3
RLC A
MOV R3,A
CLR C
MOV A,R5
SUBB A,R2
JB F0,SQR7
JC SQR8
SQR7:         
MOV R5,A
INC R3
SQR8:         
CLR C
MOV A,R5
RLC A
MOV R5,A
MOV F0,C
DJNZ R4,SQR6 ;根的第二字節(jié)計算完,在R3中
MOV A,R7 ;取原被開方數(shù)的左規(guī)次數(shù)
JZ SQRE ;未左規(guī),開方結束
SQR9:         
CLR C ;按左規(guī)次數(shù)右移平方根,得到實際根
MOV A,R2
RRC A
MOV R2,A
MOV A,R3
RRC A
MOV R3,A
DJNZ R7,SQR9
SQRE:         RET


2樓: >>參與討論
dianyuan
開平方程序問題
 
3樓: >>參與討論
ljxh401
思路
1=1
4=1+3
9=1+3+5
16=1+3+5+7

100=1+3+5+7+9+11+13+15+17+19
所以 n的平方=(2*n-1)的奇數(shù)加起來,記最后的奇數(shù)為X

然后看看100 和 10000 的關系
100對應的末尾數(shù)字是 19
10000對應的末尾數(shù)字是 199
因為N^2=((2*N)*N)/2
    所以(10*N)^2=((2*10*N)*(10*N))/2
所以
N1=10*N0 的話 X1=10X0+9

11000的開方 先做1的開方 先做110的開方 然后是11000的開方




4樓: >>參與討論
dianyuan
仿真了一下,發(fā)現(xiàn)有些數(shù)據(jù)算出來不對
非常感謝 ljxh401 ,一下子明白了很多。
仿真了一下,發(fā)現(xiàn)有些數(shù)據(jù)算出來不對。
好象是300以上的數(shù)據(jù)算出來都有點莫名其妙,待我再好好琢磨琢磨。

參與討論
昵稱:
討論內(nèi)容:
 
 
相關帖子
哪里可尋4腳貼片5V三端穩(wěn)壓標號為DF的型號及資料?
怎么驅動熒光數(shù)碼管?
關于DAC0832的問題
特別提醒所有做NAND驅動和使用NAND的朋友
在C51中關于位段使用的土辦法~~
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號