A. 单片机程序状态字PSW的OV位到底是怎么判断溢出的
D2位OV是判断溢出的标志。
在单片机中状态寄存器PSW是一个用了比较多的寄存器,除了D1位空着外,其它的7位都要使用,其中D7位Cy,是进(借)位,当做加法或减法时,进位标志和借位标志都是由它来表示.
当位和位之间相互传送时也不能少了它,必须要经它中转.D6位Ac位是辅助进位标志,当做加法或减法时由第四位向第五位进位或借位时,它会被置1.它也用于十进制调整(DA A).
D5位是用户标志位,当程序因某种原因"跑偏"后,用户可以用它来标志程序该从哪儿开始执行.不重复已经执行过的指令.
D4、D3位合在一块儿,指明工作寄存器的组别,这主要用于比较复杂一些的程序,R0组寄存器不够用的情况下用到R1、R2、R3组的寄存器时要用到这二位。
B. 单片机程序状态字PSW的OV位到底是怎么判断溢出的有CY位不就够了么
溢出,是通用的词汇。
含义,一般就是,容器太小,盛不下了。
但是,在计算机领域,却有些怪诞。
人类所用的数,有:自然数、整数。
到了搞计算机的人的嘴里,就要改称为:无符号数、带符号数。
计算机中的八位二进制机器码,所能表示的范围,如下所示:
机器码,无论代表什么数字,只要运算结果超出范围,就是【溢出】。
但是,在计算机专业人的嘴里,就不一样了。
【无符号数的溢出】,不叫溢出,要叫做【进位】。
【带符号数的溢出】,才叫做【溢出】。
搞计算机的这些人,基本概念不清,却自命不凡!
冒充脑回路清奇。。。正常人对此,就只能无语了。
----------------------
如果你让计算机计算:
1111 1110 + 1111 1101 = (1) 1111 1011
这是代表了无符号数:254 + 253 = (256) 251 = 507。
和,超出了 255,就是溢出了。特征是【进位为 1】。
这也代表了带符号数:(-2) + (-3) = (进位舍弃) (-5)。
和,没有超出范围,没有溢出,结果正确。
----------------------
如果你让计算机计算:
0111 1110 + 0111 1101 = (0) 1111 1011
这是代表了无符号数:126 + 125 = (0) 251。
和,不超出 255,没有溢出。特征是【进位为 0】。
这也代表了带符号数:126 + 125 = (进位舍弃) (-5)。
和,超出 +127,就溢出了,结果错误!特征是:符号不对了。
----------------------
CPU 做完运算,会给出八位结果,以及标志位。
如果你算的是无符号数,你就应该关心“进位标志 CY”。
如果你算的是带符号数,你就应该关心“溢出标志 OV”。
C. 51单片机的溢出问题
有深入探究的意愿,很好。
OV标志位是针对有符号数据类型计算的溢出标志,所以其规则是对bit6(有效数据最高位)或bit7(符号位)其中一位发生进位或借位时,OV才会置位。
以你举的例子来解释,运算时bit6和bit7同时发生进位了,所以OV并不置位。或者从另一个角度来说,前一个二进制补码代表-123,后一个二进制补码代表-1,二者相加的结果是-124——并没有超过八位有符号整型-128~+127的有效范围,所以并不溢出。
D. 单片机中的溢出标志位 ov请详细解释一下在线等。
是低四位向高四位借位或进位时的标志。
如1F上加1则变成了20H,此时低四位向高四位进了一位,所以OV置1.
再如20H减1则变成了1FH,此时低四位不够减,向高四位借了一位,所以OV亦为1.
E. 单片机程序状态字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。
(5)单片机溢出标志位判断实例扩展阅读
数据类型:
SFR也是一种扩充数据类型,占用一个内存单元,值域为0~255。利用它可以访问51单片机内部的所有特殊功能寄存器。如用sfr P1 = 0x90这一句定P1为P1端口在片内的寄存器,在后面的语句中我们可以用P1 = 255(对P1端口的所有引脚置高电平)之类的语句来操作特殊功能寄存器。
F. 什么叫做单片机中的“溢出标志”
单片机中的状态寄存器有这样一个标志位,因为在加减乘除中,都会出现运算结果超出机器所能表示的范围,所以用来表示是否溢出。还有一个作用是在计数器/定时器中用来计算计数值是否已经达到预先设定的值。
G. 什么叫做单片机中的“溢出标志”
0V——溢出标志,对于单字节的有符号数,若用最高位(b7)表示正、负号,则只有7位有效数位(b6~b0),能表示-128~+127之间的数。
运算结果超出了这个数值范围,就会发生溢出,此时0V=1,否则0V=0。此外,在执行乘法指令时,0V=1表示乘积超过255;在执行除法指令时,0V=1表示除数为0。
(7)单片机溢出标志位判断实例扩展阅读
定时器中断由单片机中的定时器溢出而申请的中断。51单片机中有两个定时器T0和T1:TF0:定时器T0溢出中断请求。当定时器TO产生溢出时,TO中断请求标志TF0置1,请求中断处理。TF1:定时器T1溢出中断请求。当定时器Tl产生溢出时,T1中断请求标志TF1置1,请求中断处理。
F0,用户标志位:该位可由用户置1或清0,用于实现某些测控功能。
AC,半进位标志位:当CPU进行加法(或减法)运算时,如果低半字节(b3~b0)向高半字节(b7~b4)有进位(或借位),即b3向b4进位(或借位)时,AC置1,否则清0。AC可用于BCD码加法时的调整判别位。
CY,进位标志位: 当CPU进行加法(或减法)运算时,如果运算结果的最高位(b7)有进位(或借位),CY则置1,否则清0。