51單片機PSW之CY與OV的聯繫與區別

1.先從計算機存儲的機制說起:

直接說有符號數,先說一個字節的的補碼錶示範圍爲-2^7~(2^7-1),即-128~127。

當X>0時,X[原碼]=[反碼]=[補碼]

當X=0時,存在[+0]和[-0]兩種表示形式,[+0]原=0000 000,[+0]反=0000 0000,[+0]補=0000 0000

[-0]原=1000 000,[-0]反=1111 111,[-0]補=0000 0000

當X<0時:

a.負數的原碼:最高位D7爲1,剩餘D6~D1爲其絕對值二進制表示。 例如:-1的原碼爲1000 0001;

b.負數的反碼:最高位D7仍保留爲1,剩餘D6~D1爲其絕對值二進制按位取反。例如:-1的反碼爲1111 1110;

c.負數的補碼:補碼爲對應反碼加1。例如:-1的補碼爲1111 1111。

有符號數在計算機中是以補碼形式存在的。

數值 原碼 反碼 補碼
-1 1000 0001 1111 1110 1111 1111
-2 1000 0010 1111 1101 1111 1110
…… …… …… ……
-128 1000 0000

總結:當X<0時,X[補碼]=256-|X|=255--|X|+1=1111 1111--|X|+1=X[反碼]+1,256爲一個字節的模的大小,爲2^8。

原碼錶示範圍:最小值:1111 1111=-127,最大值爲0111 1111爲+127,故範圍爲-127~(+127),其中包括[+0]原和[-0]原,共2^8個數;

反碼錶示範圍:最小值:1000 0000=-127,最大值爲0111 1111爲+127,故範圍爲-127~(+127),其中包括[+0]反和[-0]反,共2^8個數

補碼錶示範圍:最小值按理來說應該是1000 0001=-127,但因爲[+0]補=[-0]補=0000 0000,從-127~+127共255個數,少一個數怎麼辦呢?-1的補碼是確定無異的,爲1111  1111-128作爲一個字節所能表示的有符號數的最小值,應是1111  1111(-1)一直減1得到的,所以-128的補碼爲1000 0000。

2.結合51單片機,重點對程序狀態字PSW之中的CY和OV位進行分析

51單片機之PSW位

位地址

D7

D6

D5

D4

D3

D2

D1

D0

位符號

CY

AC

F0

RS1

RS0

OV

-

P

PSW作爲一個8位的特殊功能寄存器,記錄了當前有關CPU狀態的各種信息,分爲兩類:一類是當前指令執行結果的狀態信息,如CY/AC/OV/P;另一類是存放控制信息,如RS1/RS0/F0。先介紹除了CY+OV之外的標誌位:

AC(PSW.7)輔助進位標誌:當進行加法或減法操作而產生低四位向高四位進位或者借位時,AC將被硬件置位(AC=1),否則清零(AC=0),AC主要用於二-十進制加法調整;

F0(PSW.5)用戶標誌位:是用戶自定義的一個標誌位,可以用軟件置位或者清零,常用來控制程序的流向;

RS1、RS0(PSW.4、PSW.3)工作寄存器選擇控制標誌:可以軟件置1或者清零來確定工作寄存器區;

P(PSW.0)奇偶標誌位:每個指令週期都由硬件來置位或者清零,以表示累加器A中1的位數的奇偶數。如果位數爲奇數,則P=1,如果值爲1的個數爲偶數,則P=0.  

下面重點介紹

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章