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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 如何在DSP上實(shí)現(xiàn)二進(jìn)制數(shù)折半查找算法

          如何在DSP上實(shí)現(xiàn)二進(jìn)制數(shù)折半查找算法

          作者: 時(shí)間:2014-02-23 來(lái)源:網(wǎng)絡(luò) 收藏
          break: normal; border-width: 0px; padding: 0px; margin: 10px; font-family: Arial, 宋體; font-size: 14px; line-height: 26px; background-color: rgb(255, 255, 255); ">  bin-search lar AR0,#0800h ;AR0數(shù)據(jù)的總數(shù)目

          本文引用地址:http://www.ex-cimer.com/article/241697.htm

            mar *,AR0

            mar *BR0+ ,AR3 ;總數(shù)目的一半

            lar AR3, #NTABLE;AR3指向數(shù)更的開(kāi)始

            lacl #11 ;重復(fù)2的N次方,數(shù)列數(shù)據(jù)的個(gè)數(shù)為2的N次方

            samm BRCR ;重復(fù)次數(shù)存放在BRCR中

            ldp #LOOK

            lace LOOK ;要查找數(shù)據(jù)存放在ACC中

            sub * ;與AR3所指的存儲(chǔ)單元的數(shù)據(jù)相減

            bcnd nothere , LT ;ACC值小于0,要查找的數(shù)據(jù)不在本數(shù)列中

            rptd nothere-1

            bend found,EQ ;打到數(shù)據(jù)

            xc 1, GT ;若ACC中的數(shù)據(jù)較大

            mar *0+, AR0 ;

            xc 1, LT ;若ACC中的數(shù)據(jù)較小

            mar *0-, AR0 ;

            mar *BR0+, AR3 ;查找空間減半

            lacc LOOK

            sub *

            ;***********************

           ??;未找到,將ACC置0后返回

           ??;***********************

            nothere retd

            zac

            nop

           ??;***********************

           ?。徽业綌?shù)據(jù),將數(shù)據(jù)地址存放在ACC中返回

           ?。?**********************

            found ldp #0

            apl #0fffeh,PMST ;復(fù)位PMST位

            retd

            lamm AR3 ;存數(shù)據(jù)地址

            nop  3 輔助說(shuō)明

            程序中較為詳細(xì)的介紹了每個(gè)步驟所需完成的功能,下面就一些關(guān)鍵的地方進(jìn)行一些說(shuō)明。

            (1)程序如果找到查找的數(shù)據(jù)則返回?cái)?shù)據(jù)所在的地址,未找到則送0至ACC寄存器。

            (2)程序中的mar BR0+,AR3是將當(dāng)前AR(輔助寄存器)指定的數(shù)據(jù)存儲(chǔ)器的內(nèi)容按逆向進(jìn)位方式加AR0的內(nèi)容。由于      在該指令前有一條mar*,AR0指令,這條指令指定了下一條指令的輔助寄存器。因此在執(zhí)行MAR BR0+,AR3時(shí),實(shí)際上是輔助寄存器AR0與自身逆向相位相加:

            其結(jié)果是數(shù)據(jù)為原來(lái)的一半。實(shí)際上這條指令確定了算法中的“中間位置”。

            (3)samm BRCR指令程序執(zhí)行是是與rptp nothere-1指令配合使用的。Samm指令的功能是將循環(huán)次數(shù)的值(這里是11)存放在BRCR中。BRCR(Block Repeat Counter Register)是個(gè)16位的寄存器,用于存放程序塊重復(fù)操作的次數(shù)。Rptp指令是重復(fù)操作指令,它的功能是重復(fù)執(zhí)行下一條指令到該指令指定的地址之內(nèi)的程序代碼,重復(fù)執(zhí)行的次數(shù)由brcr決定。在上面的程序中,RPTR指令指定的地址是nothere-1,也就是說(shuō):重復(fù)執(zhí)行的程序代碼從bcnd found直到nthere的前一指令Sub*。



          關(guān)鍵詞: DSP 二進(jìn)制數(shù) 折半查找

          評(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); })();