进位/借位标志CF和溢出标志OF

溢出概念与判别方法

什么是溢出?

溢出是指运算结果超过了数的表示范围。通常,称大于机器所能表示的最大正数为上溢,小于机器所能表示的最小负数为下溢。

计算机使用固定长度的机器数来表示数的,其所能表示的范围是有限的。运算结果超过了这个范围就溢出了。

什么情况下会溢出?

两正数相加(或正数减负数)可能产生上溢;两负数相加(或负数减正数)可能产生下溢。

补码定点数加/减运算溢出判断

补码减法也是用加法器实现的,因此,补码加/减运算最后都可以转化为A补+B补。

加法溢出的情况是:正数+正数可能。产生溢出(上溢),负数+负数可能产生溢出(溢出)

(1)采用一位符号位

A补,B补的符号相同,结果与它们不同,则结果溢出。

解释:补码加法时,符号位与数值位一起参加运算,如果结果超过正数范围(如0111,超过这个最大正数,机器数就往1000、1001...这个方向)符号位会变成1,下溢也是同理(超过1111,机器数会往0000、0001...,符号位变为0)

(2)采用双符号位

结果符号S1S2=   00结果为正,无溢出;

                            01表示结果正溢出;

                           10表示结果负溢出;

                           11结果为负数,无溢出

(3)采用一位符号位根据数据位的进位情况判断溢出

符号位的进位与最高数据位的进位相同,则说明没有溢出,否则发生溢出。

解释:

加法符号位有几种种情况:

0+0=0(数据位和符号位均没进位,没溢出);0+0=1(符号位没进位,数据位进1位,溢出,上溢);

0+1=1(符号位和数据位均没进位,没溢出);0+1=0(符号位和数据位均进位,没溢出);

1+1=1(数据位和符号位均进1位,没溢出);1+1=0(符号位进1位,数据位没进位,溢出,下溢)

综上,溢出的充要条件是符号位进位与数据位进位不同

溢出标志OF

OF=1表示溢出,OF=0表示没溢出

进位/借位标志CF

CF=1表示最高位向前有进位或游位,CF=0表示最高位没有向前进位或游位。

在汇编语言中,进位借位标志(Carry Flag,简称CF)是一个标志位,用来指示在执行算术或逻辑运算时是否产生了进位借位CF标志位是一个单独的位,能够被设置或清除。 在指令集中,一些指令会根据运算结果来设置或清除CF标志位。其中,NEG指令是求补码的指令,用于将操作数的补码求反。如果操作数为0,那么CF标志位被清零;如果操作数不为0,那么CF标志位被设置为1。 举个例子来说明: - 使用NEG指令对一个正数进行求补码操作,结果为负数,CF标志位被设置为1。 - 使用NEG指令对一个负数进行求补码操作,结果为正数,CF标志位被设置为1。 - 使用NEG指令对0进行求补码操作,结果还是0,CF标志位被清零。 通过这样的标志位,程序可以根据CF的值来进行条件判断,例如在逻辑运算或条件分支语句中。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [汇编语言:进位标志溢出标志](https://blog.csdn.net/brk1985/article/details/30255421)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [汇编语言知识点总结.docx](https://download.csdn.net/download/weixin_44279771/12555846)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值