導航:首頁 > 操作系統 > 單片機溢出標志位判斷實例

單片機溢出標志位判斷實例

發布時間:2023-01-27 20:30:13

A. 單片機程序狀態字PSW的OV位到底是怎麼判斷溢出的

D2位OV是判斷溢出的標志。

在單片機中狀態寄存器PSW是一個用了比較多的寄存器,除了D1位空著外,其它的7位都要使用,其中D7位Cy,是進(借)位,當做加法或減法時,進位標志和借位標志都是由它來表示.

當位和位之間相互傳送時也不能少了它,必須要經它中轉.D6位Ac位是輔助進位標志,當做加法或減法時由第四位向第五位進位或借位時,它會被置1.它也用於十進制調整(DA A).

D5位是用戶標志位,當程序因某種原因"跑偏"後,用戶可以用它來標志程序該從哪兒開始執行.不重復已經執行過的指令.

D4、D3位合在一塊兒,指明工作寄存器的組別,這主要用於比較復雜一些的程序,R0組寄存器不夠用的情況下用到R1、R2、R3組的寄存器時要用到這二位。

B. 單片機程序狀態字PSW的OV位到底是怎麼判斷溢出的有CY位不就夠了么

溢出,是通用的詞彙。

含義,一般就是,容器太小,盛不下了。

但是,在計算機領域,卻有些怪誕。

人類所用的數,有:自然數、整數。

到了搞計算機的人的嘴裡,就要改稱為:無符號數、帶符號數。

計算機中的八位二進制機器碼,所能表示的范圍,如下所示:

機器碼,無論代表什麼數字,只要運算結果超出范圍,就是【溢出】。

但是,在計算機專業人的嘴裡,就不一樣了。

【無符號數的溢出】,不叫溢出,要叫做【進位】。

【帶符號數的溢出】,才叫做【溢出】。

搞計算機的這些人,基本概念不清,卻自命不凡!

冒充腦迴路清奇。。。正常人對此,就只能無語了。

----------------------

如果你讓計算機計算:


1111 1110 + 1111 1101 = (1) 1111 1011


這是代表了無符號數:254 + 253 = (256) 251 = 507。


和,超出了 255,就是溢出了。特徵是【進位為 1】。


這也代表了帶符號數:(-2) + (-3) = (進位舍棄) (-5)。


和,沒有超出范圍,沒有溢出,結果正確。


----------------------


如果你讓計算機計算:


0111 1110 + 0111 1101 = (0) 1111 1011


這是代表了無符號數:126 + 125 = (0) 251。


和,不超出 255,沒有溢出。特徵是【進位為 0】。


這也代表了帶符號數:126 + 125 = (進位舍棄) (-5)。


和,超出 +127,就溢出了,結果錯誤!特徵是:符號不對了。


----------------------


CPU 做完運算,會給出八位結果,以及標志位。


如果你算的是無符號數,你就應該關心「進位標志 CY」。


如果你算的是帶符號數,你就應該關心「溢出標志 OV」。

C. 51單片機的溢出問題

有深入探究的意願,很好。

OV標志位是針對有符號數據類型計算的溢出標志,所以其規則是對bit6(有效數據最高位)或bit7(符號位)其中一位發生進位或借位時,OV才會置位。
以你舉的例子來解釋,運算時bit6和bit7同時發生進位了,所以OV並不置位。或者從另一個角度來說,前一個二進制補碼代表-123,後一個二進制補碼代表-1,二者相加的結果是-124——並沒有超過八位有符號整型-128~+127的有效范圍,所以並不溢出。

D. 單片機中的溢出標志位 ov請詳細解釋一下在線等。

是低四位向高四位借位或進位時的標志。
如1F上加1則變成了20H,此時低四位向高四位進了一位,所以OV置1.
再如20H減1則變成了1FH,此時低四位不夠減,向高四位借了一位,所以OV亦為1.

E. 單片機程序狀態字PSW的OV位到底是怎麼判斷溢出的有CY位不就夠了么

單片機程序狀態字PSW的OV位是溢出標志,當進行算數運算時,如果產生溢出,則硬體將OV置1,否則清0。執行有符號加、減法指令的時候,當D6位有向D7位的進位或借位時C6Y=1時,而D7位沒有向CY位的進位或借位C7Y=0時,OV=1或C6Y=0,C7Y=,1時,則OV=1。

溢出的邏輯表達式:OV=C6Y⊕C7Y。CY位是累加器的進位或借位標志,對於無符號數可以用CY來判斷溢出,但是對有符號數就無法判斷了,所以只有CY位是不夠的。

PSW各位的定義如下:
CY(PSW.7):D7位,進位、借位標志。進位、借位CY=1;否則CY=0.

AC(PSW.6):D6位,輔助進位、借位標志。當D3向D4有借位或進位時,AC=1;否則AC=0.

F0(PSW.5):D5位,用戶標志位;

RS1、RS0(PSW.4及PSW.3):D4、D3位,寄存器組選擇控制位;

OV(PSW.2):溢出標志。有溢出OV=1,否則OV=0;

F1(PSW·1):D1位,用戶標志位;

P(PSW·0):奇偶校驗標志位;累加器ACC中的運算結果有奇數個1時P=1,否則P=0。

(5)單片機溢出標志位判斷實例擴展閱讀

數據類型:

SFR也是一種擴充數據類型,佔用一個內存單元,值域為0~255。利用它可以訪問51單片機內部的所有特殊功能寄存器。如用sfr P1 = 0x90這一句定P1為P1埠在片內的寄存器,在後面的語句中我們可以用P1 = 255(對P1埠的所有引腳置高電平)之類的語句來操作特殊功能寄存器。

F. 什麼叫做單片機中的「溢出標志」

單片機中的狀態寄存器有這樣一個標志位,因為在加減乘除中,都會出現運算結果超出機器所能表示的范圍,所以用來表示是否溢出。還有一個作用是在計數器/定時器中用來計算計數值是否已經達到預先設定的值。

G. 什麼叫做單片機中的「溢出標志」

0V——溢出標志,對於單位元組的有符號數,若用最高位(b7)表示正、負號,則只有7位有效數位(b6~b0),能表示-128~+127之間的數。

運算結果超出了這個數值范圍,就會發生溢出,此時0V=1,否則0V=0。此外,在執行乘法指令時,0V=1表示乘積超過255;在執行除法指令時,0V=1表示除數為0。



(7)單片機溢出標志位判斷實例擴展閱讀

定時器中斷由單片機中的定時器溢出而申請的中斷。51單片機中有兩個定時器T0和T1:TF0:定時器T0溢出中斷請求。當定時器TO產生溢出時,TO中斷請求標志TF0置1,請求中斷處理。TF1:定時器T1溢出中斷請求。當定時器Tl產生溢出時,T1中斷請求標志TF1置1,請求中斷處理。

F0,用戶標志位:該位可由用戶置1或清0,用於實現某些測控功能。

AC,半進位標志位:當CPU進行加法(或減法)運算時,如果低半位元組(b3~b0)向高半位元組(b7~b4)有進位(或借位),即b3向b4進位(或借位)時,AC置1,否則清0。AC可用於BCD碼加法時的調整判別位。

CY,進位標志位: 當CPU進行加法(或減法)運算時,如果運算結果的最高位(b7)有進位(或借位),CY則置1,否則清0。

閱讀全文

與單片機溢出標志位判斷實例相關的資料

熱點內容
android錄音開源 瀏覽:453
弗洛伊德演算法c 瀏覽:6
udp命令字 瀏覽:659
app服務端java源碼 瀏覽:798
電腦用文件夾玩大型游戲 瀏覽:254
安卓耳塞失靈怎麼辦 瀏覽:765
華三交換機保存命令 瀏覽:605
命令方塊怎麼調鍵盤 瀏覽:841
不把密碼存在伺服器上怎麼辦 瀏覽:398
怎麼讓指令方塊的命令消失 瀏覽:543
用單片機做plc 瀏覽:404
雲伺服器進入子目錄命令 瀏覽:795
伺服器機櫃如何配電 瀏覽:578
怎麼刪除iphone資源庫里的app 瀏覽:940
pdf魚 瀏覽:648
單片機pcf8591什麼作用 瀏覽:805
sql命令學院 瀏覽:283
加密軟體在電腦那個盤 瀏覽:988
android獲取外部存儲 瀏覽:573
怎麼查自己家的伺服器地址 瀏覽:858