組合語言,圖中畫波浪線的地方,Cy=1,Ac,=1,OV =0,P=1這些數值是怎麼得出來的呢?
常量?幻數?
CY AC OV P指的是PSW(FLAG暫存器)裡的某一位,51裡叫PSW,Intel彙編叫FLAG暫存器。
CY指的是進位標誌,當最高位有進位/借位(減法)時,CY=1,否則CY=0
AC指的是輔助進位,它的用途是當有半位元組發生進位/借位的時候,置1,半位元組指的是從低到高的第4位(D3位)
OV指的是溢位標誌,指的是有符號運算髮生溢位的時候,OV=1,比如127+1,從無符號的角度上理解,沒有進位,但從有符號的角度,已經發生溢位。(有符號範圍-128~+127)
P指的是奇偶校驗位,暫存器裡的1的總數是奇數,值就是1,否則,就是0
A = 53H = 01010011
R0 = FCH = 11111100
ADD A, R0 => 01010011 + 11111100 = 1 0100 1111
計算結果已經超過了255這個範圍,發生進位,所以CY=1
低4位是0011+1100=1111,沒有發生進位,所以AC=0
因為A是正數,R0是負數,有符號正數和負數相加永遠不會溢位,所以OV=0
計算結果是 0100 1111(最高位進位被丟棄),1的個數是5個,所以P=1
PSW的含義建議百度,關鍵字:
51微控制器 PSW_百度搜索
資料很多。
你所說的:Cy=1,Ac,=1,OV =0,P=1這些數值,是四個典型標誌位的狀態。它們屬於MCS51系列微控制器的標誌暫存器PSW。
標誌暫存器PSW是一個八位暫存器,內容(或者說各位的狀態)和累加器ACC的運算相關。用來表徵l累加器ACC運算結果的一些特徵,比如說有無進位、借位等。其每位的具體含意如下所示。
PSW各位定義:
psw。7 psw。6 psw。5 psw。4 psw。3 psw。2 psw。1 psw。0
CY AC FO RS1 RS0 OV - P
其中,F0、RS1\RS0可以由使用者自己程式設計設定,其他位的狀態是根據程式執行結果,由硬體自動設定的。對我們一般使用者來講,最關心的是以下四位:
1。進位標誌CY(PSW。7)。它表示運算結果是否有進位(或借位)。如果結果在最高位有進位(加法)或者借位(減法),則該位為1,否則為0。
2。輔助進位標誌AC(PSW。6)。又稱半進位標誌,它表示了兩個八位數運算低四位是否有半進位,即低四位相加(或減)有否進位(或借位),如有則AC為1狀態,否則為0。它主要用於二進位制的十進位制運算的演算法調整(BCD碼調整),平時我們可不必關注。
3。溢位標誌位OV(PSW。2)。反映帶符號數的運算結果是否有溢位,有溢位時,此位為1,否則為0。具體來講:
加減運算中,若運算超出了累加器A所能表示的符號數的有效範圍(-128~127),則自動置1,表示產生了溢位,說明運算結果是錯誤的。否則為0。
乘法運算中,Ov=1表示乘積超過255,即乘積分別在A和B中;否則為0,表示乘積只在A中。
除法運算中,Ov=1表示除數為0。
4。奇偶標誌P(PSW。0)。反映累加器ACC內容的奇偶性,如果ACC中的運算結果有偶數個1,則P為0,否則,P=1。
PSW:由於PSW暫存器存放程式執行中的狀態,所以又叫程式狀態字。
另外4個位的含義:
1。使用者標誌位F0(PSW。5)。我們使用者可以透過程式設計,對這個標誌位置位或復位,使用非常靈活,常用作非同步通訊時候資料收發標誌或準備好的標誌。
2。暫存器組選擇位RS1&RS0(PSW。4 & PSW。3)。 選擇CPU當前使用的工作暫存器組,微控制器中共有四組工作暫存器,每次上電或復位後RS被置0,預設是第一組的暫存器。使用者可以程式設計選擇當前工作暫存器,達到保護某一區R0~R7中資料的目的。