sky-Hawk where 发表于 2014-11-20 17:26:52

[转]51单片机PSW之CY与OV的联系与区别

本帖最后由 小菜儿 于 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的补码是确定无异的,为11111111,-128作为一个字节所能表示的有符号数的最小值,应是11111111(-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.

枕上梦 发表于 2017-3-16 12:22:44

说不明白IDWEW

sky-Hawk where 发表于 2015-8-11 22:51:17

楼主太好了,支持一下!

xwjzll 发表于 2015-1-15 13:10:08

说的很清楚透彻

shaoziyang 发表于 2014-11-21 09:31:06

说的很清楚透彻。
页: [1]
查看完整版本: [转]51单片机PSW之CY与OV的联系与区别

Baidu
map