导航:首页 > 操作系统 > 单片机溢出标志位判断实例

单片机溢出标志位判断实例

发布时间:2023-01-27 20:30:13

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。

阅读全文

与单片机溢出标志位判断实例相关的资料

热点内容
调度系统软件python 浏览:203
微信大转盘抽奖源码 浏览:497
压缩机损坏的表现 浏览:862
同步数据服务器怎么用 浏览:634
163邮箱服务器的ip地址 浏览:50
服务器跟域是什么 浏览:128
rails启动命令 浏览:465
logistic命令怎么用 浏览:738
c语言点滴pdf 浏览:747
linuxrtc编程 浏览:258
linux打包并压缩命令 浏览:644
aes加密的证书格式 浏览:99
oracledbcalinux 浏览:844
酬勤任务app怎么被特邀 浏览:199
android应用文件夹 浏览:1002
平面设计法则pdf 浏览:339
3d圆角命令怎么用 浏览:569
程序员买意外险还是重疾险 浏览:621
辽宁的dns服务器地址云空间 浏览:448
我的世界服务器断开后怎么连接 浏览:415