OF CF 标志位的判定
OF:最高位进位⊕次高位进位(对带符号数才有意义)
最高位进位:进位出去(溢出去)\color {green}{最高位进位:进位出去(溢出去)}最高位进位:进位出去(溢出去)
次高位进位:进位到最高位(对带符号数来说即符号位)\color {green}{次高位进位:进位到最高位(对带符号数来说即符号位)}次高位进位:进位到最高位(对带符号数来说即符号位)
CF: sub⊕C(⊕为异或,CF对无符号数才有意义)
作减法则sub为1\color {green}{作减法则sub为1}作减法则sub为1
C为进位输出——最高位有无进位出去(溢出去)\color {green}{C为进位输出——最高位有无进位出去(溢出去)}C为进位输出——最高位有无进位出去(溢出去)
举例:
假设n=8,机器数X和Y的真值分别为x和y
OF:
来看带符号那一行:
0xB0——1011 0000 (-80)
0x8C——1000 1100(-116)
X+Y:0011 1100 (60) 8位机器数表示范围[127,−128],负溢出后加上2n,这题中即加上256\color {green}{8位机器数表示范围 [127,-128] , 负溢出后加上2^n,这题中即加上256}8位机器数表示范围[127,−128],负溢出后加上2n,这题中即加上256
−80−116+256=60\color {green}{-80-116+256=60}−80−116+256=60
关于溢出的处理,可以参照这个博客:计算机内加减法的溢出处理
对原数X(原数+加数=结果):\color {red}{对原数X(原数+加数=结果):}对原数X(原数+加数=结果):
最高位进位为1(最高位1+1,进位),次高位没有进位(0+0),1⊕0=1,则OF为1\color {red}{最高位进位为1(最高位1+1,进位),次高位没有进位(0+0),1⊕0=1,则OF为1}最高位进位为1(最高位1+1,进位),次高位没有进位(0+0),1⊕0=1,则OF为1
CF:
来看无符号那一行:
0xB0——1011 0000 (176)
0x8C——1000 1100(140)
X+Y:0011 1100 (60) 8位机器数表示范围[127,−128],正溢出后减去2n,这题中即减去上256\color {green}{8位机器数表示范围 [127,-128] , 正溢出后减去2^n,这题中即减去上256}8位机器数表示范围[127,−128],正溢出后减去2n,这题中即减去上256
对原数X(原数+加数=结果):\color {red}{对原数X(原数+加数=结果):}对原数X(原数+加数=结果):
加法,sub=0\color {red}{加法,sub=0}加法,sub=0
最高位进位(1+1,溢出去了),进位输出C=1\color {red}{最高位进位(1+1,溢出去了),进位输出C=1}最高位进位(1+1,溢出去了),进位输出C=1
CF=sub⊕C=0⊕1=1\color {red}{CF=sub⊕C=0⊕1=1}CF=sub⊕C=0⊕1=1
最后一提:计算机对带/无符号数的机器码统一处理\color {blue}{最后一提:计算机对带/无符号数的机器码统一处理}最后一提:计算机对带/无符号数的机器码统一处理
OF,CF等标志位是由机器码运算结果决定的,是否为带符号数并不影响\color {blue}{OF,CF等标志位是由机器码运算结果决定的,是否为带符号数并不影响}OF,CF等标志位是由机器码运算结果决定的,是否为带符号数并不影响
所以,才会有带不带符号它的OF,SF,CF都一样\color {green}{所以,才会有带不带符号它的OF,SF,CF都一样}所以,才会有带不带符号它的OF,SF,CF都一样
终极简单的判定方法:
求OF就把机器码转成带符号数然后运算,看有没有溢出
求CF同理,转成无符号数,然后运算看有没有溢出
OF CF 标志位的判定相关推荐
- 关于OF CF 标志位对于判定两整数大小关系(无符号数及有符号数情况)作用的讨论
在x-86 64 IA32 体系下,处理器通过对两数求差(保存或不保存结果)然后读取被改变的条件码来判定结果的正负,进而得知两整数大小关系.其背后的逻辑关系设计非常精妙,然而大部分书籍资料中都只是一笔 ...
- 溢出OF和进位CF标志位的判定
一.学习CF与OF,要始终牢记一点.CF是无符号数溢出标志,OF是有符号数溢出标志. 通俗一点说就是,即使有符号数相加/相减导致了CF=1也没什么意义,不能说明结果的正确与否.此时,OF=1, 则说明 ...
- 为什么INC,DEC指令不影响CF标志位呢?
引言 我们知道执行算数运算指令的时候,当结果的最高位与进位或者借位时会把状态寄存器FLAGS的CF位置为1,否则置为0,但是为什么INC和DEC这样的指令不影响CF标记位呢? 怀着对这个问题的疑惑,在 ...
- x86架构下 CF与OF标志位 带符号和无符号运算 详解
针对能够影响OF和CF标志位的指令,一般来说是涉及到数据运算的指令,这里使用add举例,即不区分有无符号的加法指令,参与运算的数据,从二进制层级去考虑. CF标志位 对于CF,它是carry flag ...
- 汇编中有符号与无符号数以及CF,OF标志位的区分
汇编中有符号与无符号数以及CF,OF标志位的区分 一. 只有一个标准! 首先需要知道,计算机对数值的存储采用补码形式存储,一来避免了+0和-0的尴尬,二来数值的加法和减法可以统一为补码的加法. 在汇编 ...
- CF、SF、OF、ZF标志位
没学汇编,这种题我真是做一道错一道:-( OF(overflow flag) 溢出标志位 溢出标志位 OF = 1 表示带符号整数运算时结果发生溢出.对于无符号整数运算,OF没有意义. 对于有符号数的 ...
- [汇编语言]各个指令对于标志位的影响
1.ADD CF:若计算结果有向更高位的进位,CF=1,否则为0 OF:带符号数加法,两个操作数的符号相同,而结果却与操作数相反(正+正=负/负+负=正) 剩下的则根据结果:ZF:结果为0,PF:二进 ...
- debug 标志位说明
of df if sf zf af pf cf 标志位为1 ov dn ei ng zr ac pe cy 标志位为0 nv up di pl nz ...
- Win32汇编:数组与标志位测试总结
整理复习汇编语言的知识点,以前在学习<Intel汇编语言程序设计 - 第五版>时没有很认真的整理笔记,主要因为当时是以学习理解为目的没有整理的很详细,这次是我第三次阅读此书,每一次阅读都会 ...
最新文章
- 【Android 逆向】Dalvik 函数抽取加壳 ( 类加载流程分析 | native 函数查询 | dalvik_system_DexFile.cpp#defineClassNative 函数 )
- mssql的T-SQL教程(从建登陆到建库、表和约束)
- IO-5(InputStreamReader、OutputStreamWriter、序列化流、反序列化流、Serializable、transient)
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1075:药房管理
- Ajax/CSS表格设计汇集
- 基于java的数据结构学习——数组实现的队列和循环队列及性能对比
- Docker-构建/启停容器镜像及常用命令介绍
- 怎么看电脑配置高不高_辣椒产量高不高?关键看播种前的种子处理,你知道怎么做吗?...
- 无监督学习:Linear Dimension Reduction(线性降维)
- paip.提升性能---C#.NET程序内存占用过多以及OutOfMemory解决方法
- opera档案学习(一)
- 关于用户登录的记住密码实现思路(考虑到安全问题)
- 初识:心血管磁共振(CMR)成像
- wso2_使用WSO2开发
- Luogu1527[国家集训队]矩阵乘法
- UVa 10141 - Request for Proposal
- 微信支付-vue 实现微信支付-前端篇
- Dreamweaver 1 网页制作
- 门德尔松 E小调小提琴协奏曲 个人赏析
- hudi系列-upsert写过程