c语言32位数如何判断溢出,单片机程序状态字PSW的OV位到底是怎么判断溢出的?有CY位不就够了么?...

单片机程序状态字PSW的OV位是溢出标志,当进行算数运算时,如果产生溢出,则硬件将OV置1,否则清0。执行有符号加、减法指令的时候,当D6位有向D7位的进位或借位时C6Y=1时,而D7位没有向CY位的进位或借位C7Y=0时,OV=1或C6Y=0,C7Y=,1时,则OV=1。

溢出的逻辑表达式:OV=C6Y⊕C7Y。CY位是累加器的进位或借位标志,对于无符号数可以用CY来判断溢出,但是对有符号数就无法判断了,所以只有CY位是不够的。

PSW各位的定义如下:

CY(PSW.7):D7位,进位、借位标志。进位、借位CY=1;否则CY=0.

AC(PSW.6):D6位,辅助进位、借位标志。当D3向D4有借位或进位时,AC=1;否则AC=0.

F0(PSW.5):D5位,用户标志位;

RS1、RS0(PSW.4及PSW.3):D4、D3位,寄存器组选择控制位;

OV(PSW.2):溢出标志。有溢出OV=1,否则OV=0;

F1(PSW·1):D1位,用户标志位;

P(PSW·0):奇偶校验标志位;累加器ACC中的运算结果有奇数个1时P=1,否则P=0。

c语言32位数如何判断溢出,单片机程序状态字PSW的OV位到底是怎么判断溢出的?有CY位不就够了么?..._第1张图片

扩展资料

数据类型:

SFR也是一种扩充数据类型,占用一个内存单元,值域为0~255。利用它可以访问51单片机内部的所有特殊功能寄存器。如用sfr P1 = 0x90这一句定P1为P1端口在片内的寄存器,在后面的语句中我们可以用P1 = 255(对P1端口的所有引脚置高电平)之类的语句来操作特殊功能寄存器。

参考资料来源:《单片机原理及应用》曹巧媛 编著 电子工业出版社  第二章 MCS-51单片机结构及原理  第一节 MCS-51单片机结构

参考资料来源:百度百科--PSW

参考资料来源:百度百科--程序状态字

你可能感兴趣的:(c语言32位数如何判断溢出)