<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 用軟件實(shí)現(xiàn)DAA的方法

          用軟件實(shí)現(xiàn)DAA的方法

          作者: 時(shí)間:2013-09-09 來(lái)源:網(wǎng)絡(luò) 收藏

          本文重點(diǎn)介紹用實(shí)現(xiàn)的方法。

            計(jì)算機(jī)采用的十進(jìn)制操作數(shù)一般都為壓縮型8421 BCD碼,每個(gè)BCD碼表示1位十進(jìn)制數(shù)。每2位BCD碼共存于同一字節(jié)單元中,故BCD運(yùn)算涉及狀態(tài)寄存器SREG的進(jìn)位C(第0位)和半進(jìn)位H(第5 位)。它們分別為高、低位BCD的進(jìn)(借)位。在進(jìn)行BCD碼加減運(yùn)算時(shí),計(jì)算機(jī)是按二進(jìn)制數(shù)對(duì)待的,因此會(huì)產(chǎn)生與十進(jìn)制運(yùn)算規(guī)則不相符合的情況:一是當(dāng)產(chǎn)生進(jìn)(借)位(C=1或H=1)時(shí),該進(jìn)(借)位等于16(對(duì)所涉及的1位BCD碼而言),而在十進(jìn)制運(yùn)算中應(yīng)等于10;二是可能產(chǎn)生非法BCD碼(值大于9)。即為糾正以上錯(cuò)誤而設(shè)的。

            1 的實(shí)現(xiàn)方法

            1.1 實(shí)現(xiàn)加法DAA功能子程序ADAA和ADAA1的設(shè)計(jì)方法

            經(jīng)實(shí)踐考查,BCD碼加法運(yùn)算,可產(chǎn)生以下3種情況:

           ?、?不須調(diào)整,特點(diǎn)是既不產(chǎn)生進(jìn)位,也不產(chǎn)生非法BCD碼。如$22+$11=$33。

           ?、?產(chǎn)生非法BCD碼,必須加6調(diào)整。特點(diǎn)是BCD碼相加后不產(chǎn)生進(jìn)位,但加6調(diào)整后產(chǎn)生進(jìn)位。如

            $36+$37=$6D(產(chǎn)生非法BCD),加6調(diào)整后變?yōu)?73(產(chǎn)生半進(jìn)位H)。$68+$87=$EF,加$66調(diào)整后變?yōu)?155(產(chǎn)生進(jìn)位C和半進(jìn)位H)等。

           ?、?產(chǎn)生進(jìn)位,必須加6調(diào)整。特點(diǎn)是BCD碼相加只產(chǎn)生進(jìn)位,不會(huì)同時(shí)產(chǎn)生非法BCD碼;而加6調(diào)整后既不會(huì)再產(chǎn)生進(jìn)位/半進(jìn)位(而是清除了原來(lái)的進(jìn)位/半進(jìn)位),也不會(huì)產(chǎn)生非法BCD碼。例:

            $99+$88=$121,進(jìn)位C和半進(jìn)H位都置位,故加$66來(lái)調(diào)整:$21+$66=$87,并要恢復(fù)進(jìn)位C。

            綜合以上3種情況,得出下面加法DAA之實(shí)現(xiàn)方法:首先保存BCD碼相加后的狀態(tài)寄存器SREG(保存其中的進(jìn)位C和半進(jìn)位H,稱為Co和Ho)。再將 BCD碼之和加上$66,產(chǎn)生出新的進(jìn)位Cn及半進(jìn)位Hn。若Co、Cn中有1個(gè)置位(只能有1個(gè)!),說(shuō)明高位BCD滿足調(diào)整條件并調(diào)整完畢,否則為不夠調(diào)整條件,應(yīng)減$60恢復(fù);若Ho、Hn中有1個(gè)(只能有1個(gè)!)置位,說(shuō)明低位BCD滿足調(diào)整條件并調(diào)整完畢,否則為不夠調(diào)整條件,應(yīng)減6恢復(fù)。程序中是將新、舊進(jìn)位和半進(jìn)位對(duì)應(yīng)"或"起來(lái),只對(duì)"或"結(jié)果進(jìn)行判斷。注意,軟件DAA功能既要保證本字節(jié)壓縮BCD碼相加值的正確性,又要保證對(duì)高位 BCD產(chǎn)生進(jìn)位的正確性,故要將Co∨Cn的結(jié)果返還給SREG,以使下一步能正確實(shí)現(xiàn)高位BCD帶進(jìn)位加。

            ADAA為BCD碼相加調(diào)整子程序,使用寄存器R20作為工作單元(使用R22、R11、R10等3個(gè)寄存器作為輔助工作單元),所有調(diào)整工作都在此單元內(nèi)進(jìn)行。

            ADAA1為數(shù)制轉(zhuǎn)換程序中實(shí)現(xiàn)BCD碼左移調(diào)整的子程序,為加法DAA之特例:它在R20工作單元內(nèi)實(shí)施BCD碼帶進(jìn)位位自加并完成對(duì)和的調(diào)整。

            1.2 實(shí)現(xiàn)減法DAA功能子程序SDAA的設(shè)計(jì)方法

            由實(shí)踐可知,減法DAA要比加法來(lái)得簡(jiǎn)單:只須對(duì)產(chǎn)生借位的BCD碼進(jìn)行調(diào)整。BCD碼減法運(yùn)算,只有以下2種情況:

           ?、?不產(chǎn)生借位,不須調(diào)整,如 $22-$11=$11。

           ?、?產(chǎn)生借位,此時(shí)不論有否非法BCD碼產(chǎn)生


          上一頁(yè) 1 2 3 下一頁(yè)

          關(guān)鍵詞: 軟件 DAA

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();