新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > IC解密之單片機算術運算指令

        IC解密之單片機算術運算指令

        作者: 時間:2012-03-29 來源:網絡 收藏
        8位運算的范圍只有0-255,這在實際工作中是不夠的,因此就要進行擴展,一般是將2個8位的數**算合起來,成為一個16位的運算,這樣,能表達的數的范圍就能達到0-65535。如何合并呢?其實很簡單,讓我們看一個10進制數的例程:

          66+78。

          這兩個數相加,我們根本不在意這的過程,但事實上我們是這樣做的:先做6+8(低位),然后再做6+7,這是高位。做了兩次加法,只是我們做的時候并沒有刻意分成兩次加法來做罷了,或者說我們并沒有意識到我們做了兩次加法。之所以要分成兩次來做,是因為這兩個數超過了一位數所能表達的范置(0-9)。

          在做低位時產生了進位,我們做的時候是在適當的位置點一下,然后在做高位加法是將這一點加進去。那么計算機中做16位加法時同樣如此,先做低8位的,如果兩數相加產生了進位,也要“點一下”做個標記,這個標記就是進位位C,在PSW中。在進行高位加法是將這個C加進去。例:1067H+10A0H,先做67H+A0H=107H,而107H顯然超過了0FFH,因此最終保存在A中的是7,而1則到了PSW中的CY位了,換言之,CY就相當于是100H。然后再做10H+10H+CY,結果是21H,所以最終的結果是2107H。

          帶借位的減法指令

          SUBB A,Rn

          SUBB A,direct

          SUBB A,@Ri

          SUBB A,#data

          設(每個H,(R2)=55H,CY=1,執行指令SUBB A,R2之后,A中的值為73H。

          說明:沒有不帶借位的減法指令,如果需要做不帶位的減法指令(在做第一次相減時),只要將CY清零即可。

          乘法指令

          MUL AB

          此指令的功能是將A和B中的兩個8位無符號數相乘,兩數相乘結果一般比較大,因此最終結果用1個16位數來表達,其中高8位放在B中,低8位放在A中。在乘積大于FFFFFH(65535)時,0V置1(溢出),不然OV為0,而CY總是0。

          例:(A)=4EH,(B)=5DH,執行指令

          MUL AB后,乘積是1C56H,所以在B中放的是1CH,而A中放的則是56H。

          除法指令

          DIV AB

          此單片機指令的功能是將A中的8位無符號數除了B中的8位無符號數(A/B)。除法一般會出現小數,但計算機中可沒法直接表達小數,它用的是我們小學生還沒接觸到小數時用的商和余數的概念,如13/5,其商是2,余數是3。除了以后,商放在A中,余數放在B中。CY和OV都是0。如果在做除法前B中的值是00H,也就是除數為0,那么0V=1。



        關鍵詞: IC 單片機 算術運 算指令

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 资中县| 炉霍县| 珲春市| 谷城县| 奉化市| 修水县| 确山县| 焦作市| 永丰县| 五河县| 亳州市| 板桥市| 达孜县| 扶绥县| 化德县| 陇南市| 阿坝县| 长泰县| 榆林市| 临武县| 延长县| 桃源县| 共和县| 盐山县| 芜湖县| 双牌县| 罗平县| 玛纳斯县| 黑龙江省| 德清县| 峨眉山市| 禄丰县| 延长县| 吉隆县| 兴文县| 桃江县| 铜陵市| 闻喜县| 白水县| 柘城县| 建平县|