cy(carry): 用於表示加法進算中的進製和減法運算中的借位,加法運算中有進製或減法運算中有借位則cy位置1,否則為0
ov: 表示運算過程中是否發生了溢位,若運算結果超過了8位二進位制數所能表示資料的範圍即有符號數-128~+127,則標誌位置1。
對無符號數的運算,判斷只需cy即可,ov無作用。
對有符號數的運算,ov位是有用的。「ov位是c6位進製與c7位進製的異或」,說法對的(對51微控制器而言),但不同的計算機說法不一
cy位是累加器的進製、借位標誌。下文的敘述按16位機來舉例說明,如果是8位機或其它字長,則可換乙個例子,但道理相似。
對於無符號數的運算,cy位就可以表示其是否溢位。但如果是有符號數,則不能按cy標誌來判斷了。為此,設了另乙個標誌ov,其含義就是「假如是有符號數運算,是否出現了溢位」。
例如對於16位運算器,65534 + 3,(即二進位制的1111111111111110 + 0000000000000011),
本該得65537,(即二進位制的10000000000000001),但因為暫存器只有16位,最高位的那個1丟掉了(進入了cy標誌)。結果暫存器中只剩下了1,(即二進位制的0000000000000001)。
此時,我們可以說,16位的無符號數加法,65534+3溢位了,溢位後的答案成了1。
但是對於有符號整數,情況就不同了。有符號整數採用補碼表示法。16位有符號整數不可能表示65534,此時如果機內二進位制是1111111111111110,程式中認為它是-2,故:
機內的二進位制的1111111111111110 + 0000000000000011,代表的是(-2) + 3。
請注意,此時的(-2)+3和上文的無符號數65534+3,在cpu的運算器硬體上完全相同,都是得到和為1,而cy標誌也為1。
但是,有符號數(-2)+3=1並無溢位。故此時的cy標誌不能代表它溢位了。
另外再舉一例:
無符號數32763 + 8 = 32771,沒有進製,cy標誌為0。此時並不溢位。
但是,如果是有符號數32763 + 8,這就是溢位了,因為32773的二進位制為1000000000000011,作為有符號數會被看成負數-32765。16位有符號數不可能表示32773的。
不管是有符號數還是無符號數,cpu的二進位制運算器機器加、減操作是一樣的,但其「溢位」的條件不同。
現在大多數的計算機中,如果是無符號數,都可以用cy標誌來判斷其是否溢位;而如果是有符號數,則需要用ov標誌來判斷其是否溢位。
至於ov標誌在邏輯上又是根據什麼產生的呢?則不同的計算機上有不同的實現方法,但效果都是一樣。
這裡介紹一種道理比較容易懂的方法:「雙符號位法」。具體是:
作加、減法前,先將兩個運算數都按照有符號數的規則擴充成17位。即:符號位是0的前面添一位0,符號位是1的前面添一位1。
然後按17位的機器加、減,得出17位的結果。
如果17位結果的高兩位(即雙符號位)不同,就置ov標誌為1,否則,ov標誌為零。
然後取其低16位作為最後結果。
DSP與微控制器的區別
以前剛學習微控制器時,經過一訂的程式設計,能實現很多不同的功能,當時就覺得微控制器真的是神通廣大。後來接觸到dsp,發現dsp處理數字在通訊上,更加方便。於是我就很好奇的問自己,dsp和微控制器,究竟有什麼區別 看到某論壇一篇關於dsp和微控制器區別的帖子,經過仔細整理,現在再次介紹dsp與微控制器...
PLC 與微控制器
1.plc是應用微控制器構成的比較成熟的控制系統,是已經除錯成功 成熟穩定的微控制器應用系統,具有較強的通用性。2.微控制器可以構成各種各樣的應用系統,適用範圍更廣,他只是一種積體電路,還必須與其他電路元器件及軟體構成系統才能應用。3.從工程的使用來看,對但單項工程或重複數極少的專案,採用plc方便...
微控制器和plc的區別
plc和微控制器有相同和不同的地方。個人認為,plc和微控制器有能完成乙個特定的任務,實現起來的方式不一樣。乙個任務,用微控制器來做,要根據任務來具體設計軟硬體,比如軟體的每一小部分,硬體也要很詳細的設計,如晶元 電源 電阻的選擇等等。plc也是這樣,但是它不用你操心的這麼詳細,硬體都是模組擴充套件...