本帖最后由 小菜儿 于 2014-11-20 17:28 编辑
[转]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。 有符号数在计算机中是以补码形式存在的。
总结:当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位
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.
|