用軟件實現(xiàn)DAA的方法.doc

用軟件實現(xiàn)DAA的方法.doc

ID:28109944

大小:28.00 KB

頁數(shù):6頁

時間:2018-12-08

用軟件實現(xiàn)DAA的方法.doc_第1頁
用軟件實現(xiàn)DAA的方法.doc_第2頁
用軟件實現(xiàn)DAA的方法.doc_第3頁
用軟件實現(xiàn)DAA的方法.doc_第4頁
用軟件實現(xiàn)DAA的方法.doc_第5頁
資源描述:

《用軟件實現(xiàn)DAA的方法.doc》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在學術論文-天天文庫

1、用軟件實現(xiàn)DAA的方法  本文重點介紹用軟件實現(xiàn)DAA的方法?! ∮嬎銠C采用的十進制操作數(shù)一般都為壓縮型8421BCD碼,每個BCD碼表示1位十進制數(shù)。每2位BCD碼共存于同一字節(jié)單元中,故BCD運算涉及狀態(tài)寄存器SREG的進位C(第0位)和半進位H(第5位)。它們分別為高、低位BCD的進(借)位。在進行BCD碼加減運算時,計算機是按二進制數(shù)對待的,因此會產(chǎn)生與十進制運算規(guī)則不相符合的情況:一是當產(chǎn)生進(借)位(C=1或H=1)時,該進(借)位等于16(對所涉及的1位BCD碼而言),而在十進制運算中應等于10;二是可能產(chǎn)生非法BCD碼(值大于9)。軟件DAA即為糾正以上錯誤而設的?! ?/p>

2、  1軟件DAA的實現(xiàn)方法  1.1實現(xiàn)加法DAA功能子程序ADAA和ADAA1的設計方法  經(jīng)實踐考查,BCD碼加法運算,可產(chǎn)生以下3種情況:  ①不須調整,特點是既不產(chǎn)生進位,也不產(chǎn)生非法BCD碼。如$22+$11=$33。 ?、诋a(chǎn)生非法BCD碼,必須加6調整。特點是BCD碼相加后不產(chǎn)生進位,但加6調整后產(chǎn)生進位。如  $36+$37=$6D(產(chǎn)生非法BCD),加6調整后變?yōu)?73(產(chǎn)生半進位H)。$68+$87=$EF,加$66調整后變?yōu)?155(產(chǎn)生進位C和半進位H)等?! 、郛a(chǎn)生進位,必須加6調整。特點是BCD碼相加只產(chǎn)生進位,不會同時產(chǎn)生非法BCD碼;而加6調整后既不會再產(chǎn)

3、生進位/半進位(而是清除了原來的進位/半進位),也不會產(chǎn)生非法BCD碼。例:  $99+$88=$121,進位C和半進H位都置位,故加$66來調整:$21+$66=$87,并要恢復進位C?! 【C合以上3種情況,得出下面加法DAA之實現(xiàn)方法:首先保存BCD碼相加后的狀態(tài)寄存器SREG(保存其中的進位C和半進位H,稱為Co和Ho)。再將BCD碼之和加上$66,產(chǎn)生出新的進位Cn及半進位Hn。若Co、Cn中有1個置位(只能有1個!),說明高位BCD滿足調整條件并調整完畢,否則為不夠調整條件,應減$60恢復;若Ho、Hn中有1個(只能有1個!)置位,說明低位BCD滿足調整條件并調整完畢,否則為

4、不夠調整條件,應減6恢復。程序中是將新、舊進位和半進位對應”或”起來,只對”或”結果進行判斷。注意,軟件DAA功能既要保證本字節(jié)壓縮BCD碼相加值的正確性,又要保證對高位BCD產(chǎn)生進位的正確性,故要將Co∨Cn的結果返還給SREG,以使下一步能正確實現(xiàn)高位BCD帶進位加?! DAA為BCD碼相加調整子程序,使用寄存器R20作為工作單元(使用R22、R11、R10等3個寄存器作為輔助工作單元),所有調整工作都在此單元內(nèi)進行?! DAA1為數(shù)制轉換程序中實現(xiàn)BCD碼左移調整的子程序,為加法DAA之特例:它在R20工作單元內(nèi)實施BCD碼帶進位位自加并完成對和的調整。  1.2實現(xiàn)減法DA

5、A功能子程序SDAA的設計方法  由實踐可知,減法DAA要比加法來得簡單:只須對產(chǎn)生借位的BCD碼進行調整。BCD碼減法運算,只有以下2種情況: ?、俨划a(chǎn)生借位,不須調整,如$22-$11=$11。 ?、诋a(chǎn)生借位,此時不論有否非法BCD碼產(chǎn)生,一律對產(chǎn)生借位的BCD碼加$A調整。但AVR單片機沒有加字節(jié)型立即數(shù)指令,改為減6調整,要注意加原和減補對進位的影響是相反的。為保證多字節(jié)壓縮BCD碼運算的正確性,若調整后清除了借位C,必須將其恢復。例如$22-$54=$CE,因C、H皆置位,用減去$66來調整$CE-$66=$68,調整后清除了借位C,故子程序中還要加SEC指令來恢復借位C。 

6、 注:MCS-51單片機減法DAA子程序很容易按此移植(半進位為AC)?! ?.3實現(xiàn)右移DAA功能子程序RDAA的設計方法  見”3定點數(shù)制轉換子程序”中對BCD碼右移調整的說明?!   ?定點運算子程序  (1)多字節(jié)壓縮BCD碼加法子程序ADBCD  加法在寄存器內(nèi)直接完成,以R20為DAA工作單元。BCD碼相加后,將和送到R20,調用ADAA子程序,實現(xiàn)對和的調整(返回主程序后再回送調整結果)。  (2)多字節(jié)壓縮BCD碼減法子程序SUBCD  減法在寄存器內(nèi)直接完成,以R20為DAA工作單元。BCD碼相減后,將差送至R20,調用SDAA子程序,實現(xiàn)對差的調整(返回主程序后再回

7、送調整結果)。  (3)乘法子程序MUL16  操作:(R13,R12)&TImes;(R15,R14)→R17,R16,R15,R14  采用字乘字無符號數(shù)運算。采取逐次右移部分積和乘數(shù),當乘數(shù)移出位等于1時將被乘數(shù)加入部分積的方法完成計算??梢暈?6位整數(shù)&TImes;16位整數(shù)→32位整數(shù),也可視為16位整數(shù)&TImes;16位小數(shù)→16位整數(shù),或視為16位小數(shù)&TImes;16位小數(shù)→32位小數(shù)??杉由仙崛胩幚怼! ?4)除法子程序DI

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。