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。