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.  

下面重点介绍

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