您當前的位置:首頁 > 攝影

組合語言,圖中畫波浪線的地方,Cy=1,Ac,=1,OV =0,P=1這些數值是怎麼得出來的呢?

作者:由 蔡徐坤 發表于 攝影時間:2022-03-21

組合語言,圖中畫波浪線的地方,Cy=1,Ac,=1,OV =0,P=1這些數值是怎麼得出來的呢?zi xiang2022-03-23 07:48:49

常量?幻數?

組合語言,圖中畫波浪線的地方,Cy=1,Ac,=1,OV =0,P=1這些數值是怎麼得出來的呢?知乎使用者2022-03-24 02:38:05

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這些數值是怎麼得出來的呢?知乎使用者2022-03-28 15:08:40

你所說的: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中資料的目的。

標簽: PSW  進位  暫存器  運算