www.7671.net > 单片机PSW中的OV怎么用啊?

单片机PSW中的OV怎么用啊?

单片机是8位的 当低四围向高四位进位时,ov溢出就置1了

不溢出应该清楚怎么判断正负吧.就是c位.考虑溢出-128-1单片机的计算方法为先把1和128用补码表示为11111111b和10000000b.相加得,01111111b=127正数c=0溢出0v=1,-128<1;127-(-1)表示为01111111b加00000001b=10000000b负数c=1溢出0v=1,127>-1;我也是刚看到.原来ov就是为有符号设计的当数寄存器值小于-127或大于128时候置位.

ov是最高位和次高位做异或运算当最高位和次高位同时有进位时它是0 最高位和次高位中只有一个有进位,它就是1这个能看懂么?

二进制中是0~7(三位:2的三次方),7就到顶了,没8就超出范围了,大概就这个意思

CY(Carry): 用于表示加法进算中的进位和减法运算中的借位,加法运算中有进位或减法运算中有借位则CY位置1,否则为0 OV: 表示运算过程中是否发生了溢出,若运算结果超过了8位二进制数所能表示数据的范围即有符号数-128~+127,则标志位置1.

CY位是累加器的进位、借位标志.下文的叙述按16位机来举例说明,如果是8位机或其它字长,则可换一个例子,但道理相似.对于无符号数的运算,CY位就可以表示其是否溢出.但如果是有符号数,则不能按CY标志来判断了.为此,设了另

51单片机的PSW(程序状态字)寄存器包括了C,AC,RS1,RS0,OV,P等几个状态位,这些状态位反映的是51单片机在执行完某个指令后的状态,比如有没有进位,有没有溢出,A中1的个数是奇数还是偶数个等.其中OV是溢出位,主要是想反映有符号数在运行时,是不是超出的最后的表示范围,平时在无符号位运算时没有会意思.OV是进位位与第二进位位异或的结果.

第8位是为正负号专门使用的,实际使用是7位超过了当然不能给第8位了,所以就叫溢出了,不带符号位的可以使用的是8位,七位过了就进第8位了

PSW反应累加器参与计算后的状态,所以 执行后因为有溢出,所以OV=1;与INC 30H没有关系.

PSW对应位如下:D7 D6 D5 D4 D3 D2 D1 D0CY AC F0 RS1 RS0 OV - PCY:进位标志AC:半进位标志F0:标志位,用户可以自由使用RS1 RS0:寄存器区选择 0 0 :区0 0 1 :区1 1 0 :区2 1 1 :区3OV:溢出标志P:奇偶标志

网站地图

All rights reserved Powered by www.7671.net

copyright ©right 2010-2021。
www.7671.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com