新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 如何在DSP上實現二進制數折半查找算法

        如何在DSP上實現二進制數折半查找算法

        作者: 時間:2014-02-23 來源:網絡 收藏
        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數據的總數目

        本文引用地址:http://www.104case.com/article/241697.htm

          mar *,AR0

          mar *BR0+ ,AR3 ;總數目的一半

          lar AR3, #NTABLE;AR3指向數更的開始

          lacl #11 ;重復2的N次方,數列數據的個數為2的N次方

          samm BRCR ;重復次數存放在BRCR中

          ldp #LOOK

          lace LOOK ;要查找數據存放在ACC中

          sub * ;與AR3所指的存儲單元的數據相減

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

          rptd nothere-1

          bend found,EQ ;打到數據

          xc 1, GT ;若ACC中的數據較大

          mar *0+, AR0 ;

          xc 1, LT ;若ACC中的數據較小

          mar *0-, AR0 ;

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

          lacc LOOK

          sub *

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

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

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

          nothere retd

          zac

          nop

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

         ??;找到數據,將數據地址存放在ACC中返回

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

          found ldp #0

          apl #0fffeh,PMST ;復位PMST位

          retd

          lamm AR3 ;存數據地址

          nop  3 輔助說明

          程序中較為詳細的介紹了每個步驟所需完成的功能,下面就一些關鍵的地方進行一些說明。

         ?。?)程序如果找到查找的數據則返回數據所在的地址,未找到則送0至ACC寄存器。

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

          其結果是數據為原來的一半。實際上這條指令確定了算法中的“中間位置”。

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



        關鍵詞: DSP 二進制數 折半查找

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 乐安县| 溧阳市| 五台县| 泽普县| 贵阳市| 扬中市| 安吉县| 内丘县| 长沙市| 天气| 定远县| 平武县| 辰溪县| 马边| 恭城| 大石桥市| 尚志市| 万安县| 广饶县| 辽阳市| 育儿| 剑河县| 信阳市| 深州市| 天镇县| 泸州市| 洪江市| 深泽县| 恩施市| 句容市| 隆德县| 沙洋县| 榆林市| 通州市| 湖南省| 买车| 安达市| 太和县| 远安县| 石棉县| 城市|