51单片机的溢出问题
我记得溢出的意思是超出最大值,可51的溢出标志位OV有点不太理解例如:10000101+11111111=110000101这明显11111111就是最大值,加上任何数都...
我记得溢出的意思是超出最大值,可51的溢出标志位OV有点不太理解
例如: 1000 0101
+ 1111 1111
=1 1000 0101
这明显1111 1111 就是最大值,加上任何数都会溢出的啊,可为什么ov=0
而且51中说只有第六或第七位中有一位进位或借位OV才置位,这话怎么理解? 展开
例如: 1000 0101
+ 1111 1111
=1 1000 0101
这明显1111 1111 就是最大值,加上任何数都会溢出的啊,可为什么ov=0
而且51中说只有第六或第七位中有一位进位或借位OV才置位,这话怎么理解? 展开
2个回答
展开全部
一个字节只有8位,最大数是1111 1111,+0时不会产生溢出,所以标志位OV=0,当最高位的运算产生进位或借位时OV=1,在编程时,当加法或减法时,并不确定所得的结果是什么,每次需要检查OV位的值用相应的程序去处理有借位和进位的不同情况。如单字节运算中,寄存器中已是1111 1111,加立即值1结果还放在寄存器中,则寄存器中的值加法后变为0000 0000,但OV被置位=1,此时只要检查OV值,如果为1就将另一个寄存器中的值+1,如果这个寄存顺加后OV值又成为1则再另个寄存器中加1,按照所用的字节数,不断检查,就可以进行多个字节的加法运算。简单单片机的指令最多给出4个字节的加法运算指令,但可以用这种方法扩展为20个字节的加法运算,甚至更多,条件是片内的RAM够用。
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
溢出的解释:充满某个容器并向外流出。 例如:缓冲区是内存中存放数据的地方。在程序试图将数据放到计算机内存中的某一位置,但没有足够空间时会发生缓冲区溢出。 再如:单片机的存储程序的空间(FLASH)是有限的,如果你的程序太大,或者空间分配得不...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询