CトークEFAGEレジスタビット、Pビット、Oビット

  Cビット、Pビット、Oビットについて、EFLAGEボーエンを書いているので、私ははっきりと説明していないと思うし、Cビットが、それはケースを借り実証されていない、Pビットは、私が修正することを決めた、いくつかのピットは話​​さなかったにもあります各フラグの明確な説明のために戦うために、私の記事がありません技術的なものが、人々が見て理解できるようにする、だけでなく、自分自身の知識を深め統合するだけではありませんが、私はいつも感じている参照、それは牛のトリックです基盤を構築、私は必ずしも覚えていないが、1年後、2年、あるいは5または蓄積の6年間は、だけでなく、非常に、私の知識の地平を豊かにすることを信じていますが、書かれたとして悪い良いメモリ、私は再び忘れていないとき、ボーエンは調査を開始しただろうというとき、確かに、私は、私は今、間違いなく感謝しています、感情に明確な洞察力があるでしょう。千マイルは一歩から始まります。

 

免責事項:この記事はブロガーのオリジナルの記事、再現され、元のソースのリンクと、この文を添付してください。2019-08-30,00:11:40。
浮き沈みの-----溺れて心----ブログパーク

 

(キャリー・フラグ)フラグCFキャリー:結果の最上位ビットがキャリーを生成するか、借り、その値は1であり、そうでなければその値が0である場合。

CF:最上位ビットがどのようなものです、最高ボローは何ですか?--------用語は無用であることを覚えていることですかわからない、それは理解して理解用語、トラブルなどで直接見て説明していません!

面で例を見てみましょう:私たちは0x80を - 0x40の例では、すべての例から派生し、用語を見ていない(ああ例は生活に上げる例として、32に8!)

。1  1000  0000                    // 0x80の対応するバイナリ
2  0100  0000                    // バイナリ対応0x70 
3 -----------------------

 

、減少しない、1 - 私たちは、(典型的にはコールビット0呼び出し、ビット6プログラマの角度に応じて1ビット)0を右から左にビット7の通常の論理値を押して、右から左への参照フォワード前者一つは、右から左へ、第8号の数は、これはそれのビット1から最高借りされていない。ですか?我々の実験は話します!

私たちは、観察、古いルールを容易にするために、すべてのEFLAGEフラグ1を、実験を行っているので、

 

 

 コードの実行は、唯一のCビットを観察します!

 

 

 なお、減算結果が0x40のあることが観察され、Cの位置は依然としてゼロであり、それは幅の点のデータから明らかである(例えば、実施例は8です!)我々は、8の最上位ビットが、Cビットから1を借り1に変更なし、CF何であるの私たちの解釈?それは、結果の最上位ビットがキャリーを生成するか、借り、その値は1であり、そうでなければその値が0である場合。

  Cの位置が変更されていないので、あなたがもつれにしたい場合は、最初の8は!私たちの最高の、それは少し先に最初の8(8お使いのコンピュータのある唯一のデフォルトの幅を持っている最高レベル!私達は8の例について話しているではありません16ビットのバックは、32ビット、64ビットが理解するように、16ビット、32ビット、64ビット、テストはあなた自身を示し、もちろん、)、8を理解し、明らかにビット目の前に存在しない、存在しませんまだ減少?いいえ、カット、我々は減算数で存在しないから、ビット数を必要とします

  だから、結果はどのように行うに超えた加算演算結果として、それを合計しますか?扱いやすい、余分なビットはすべて破棄され、私は維持することはできませんしないでください!水で満たされたガラスのように、実行する方法を、どのように行うには、独自の水のオーバーフローああ!

我々は、例えば、Cビットを引用し、1を借りるによるケースを設定します

1 MOV AL、80    
2 SUB AL、81

 

。1  1000年 0000                         // 0x80の対応するバイナリ
2   0001                         // バイナリ対応0x81と
3 -----------------------------

 

 

 

 私たちは借りてまっすぐ行き、その後、借りることができない、少ないし、完全な、0である高、中、高の1で、最初のカットの右の数は十分ではありません、プッシュを所有フロント7は確かの結果である第一、11111111借り8それ自身が0になり、その減少は、手立てを行わない方法は十分ではありませんし、これはバイナリああ何であるか、である(、借りて1のハイに存在している必要はありません! 、我々は結果を観察し、ビット実験高低い2うんの!! 1当量ではなく、2ああ2進、10進10も同じではない)ので、減算結果は、1111 1111となります。

 

 

 私たちは推測することを我々の期待に沿った結果が、正しいです!実験を通して、私は最高レベルであると信じて何それを理解することができるはず!

 

パリティフラグPF(パリティフラグ):パリティフラグPFは「1」の数のパリティの演算結果を反映させるために使用されます。

「1」の数が偶数の場合、PF 1値が、そうでなければその値は0です。

私は明らかに私の演算結果が1ああの偶数PFビットは0が続いている理由であるような状況に会ったようにフラグを変更するだけPF EFLAGコードを通して、あなたの手は、私は、あなたのことを信じていますか?公式の説明によれば、パリティ演算結果のパリティフラグPFは「1」の数に反映されます。「1」の数が偶数の場合、PF 1値が、そうでなければその値は0です。はいああ、ああ、なぜ明らかに演算結果であっても1、0の数や、なぜそれがあるのですか?

私たちは例を見て

1台のMOV AX、0xB03 
2のADD AX、0x1の

 

我々自身再度検証、プラス0x1の0xB03計算結果は、上記で定義された用語は、Pビットが1、試験時間の検証では、4つの計算結果が1である、0xB04は、対応するバイナリは0,000,101,100,000,100です。

 

 

 

 

 私たちは、結果は、我々は1回の試行で上記のコードに基づいて追加し、推論の間違った定義を検証することを発見し、その後、演算の結果が0xB05はそれがされていないです!バイナリを対応する定義によって、5つの1の合計をカウントし、0,000,101,100,000,101で、PFビットが0、右、我々一度実験的検証です。

 

 

 又发现我们根据定义推论的结果错误,计算结果偶数个1居然为0,奇数个1居然为1,这不与定义相反吗?这并不相反,PF位实际只是最低字节有效!!!!也就是说,不管你是8位,16位,32位也好(64位我没环境,没测),它只看你最低有效字节(8个位),最低有效字节是偶数个1,那么PF就是1,最低有效字节是奇数个1,那么PF就是0。

与定义相同的测试结果请看博主写的EFALG那篇博文

 

版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。2019-08-30,00:40:11。
作者By-----溺心与沉浮----博客园

 

溢出标志OF(Overflow Flag):溢出标志OF用于反映有符号数加减运算所得结果是否溢出。

如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。

先来说说,计算机是如何判断有溢出的,比如0x80 - 0x40

1 MOV AL,0x80
2 SUB AL,0x40

 

这里需要说明一点,计算机它只会做加法

因此我们可以等同看待下面的代码

1 MOV AL,0x80
2 ADD AL,-40        //OD它会自动将这行代码转换成ADD AL,0xC0

 

因此也等同于下面这段代码,其实也就是这段

MOV AL,0x80
ADD AL,0xC0

 

1000 0000

1100 0000

-------------------

0100 0000

我们前面说过,计算机不管正数与负数,这个取决于使用者怎么定义(char, unsigned char),

(介绍两个概念,本想着全靠实验全部都已白话文形式描述的,结果还是不得不介绍术语了,汗)

符号位

我们这里把它当做有符号位看待,最高位就是符号位

最高有效数值位:紧挨着最高位的旁边那个位,从右往左数,也即第7位

如果符号位有进位,1,没有就是0(什么是符号位有进位?如果最高位相加,往前进位了,之前我们称溢出(针对无符号数),现在我们称有发生进位)

最高有效数值位向符号位产生进位,1,没有就是0。

然后计算机会拿这两个数进行异或(XOR),如果异或结果为1,OF位就为1,如果异或结果为0,OF位就为0

 

如果前面中的EFLAG博文,O位,C位发生进位的那几种情况有弄明白的话,其实这里都是多余的,尽管笔者自己自己也有时候犯懵,也不是说不懂这个,只是这一块的反应会慢一点,但多次举例,反复练习,写笔记,也比刚开始顺溜许多了,或许有一天我还是会懵圈,遗忘,但是我把自己踩过的坑一点不落的写了下来,日后回头看,也会避免将来再去踩坑,希望这些也能够帮助后来者学习。其实文章写到这,我也发现自己写啰嗦了,不过就是有符号,无符号两种情况的溢出与不溢出,但写清楚就是为了能更好的去理解本质,带来的问题就是过于啰嗦,适得其反。但这些的确也是曾经困扰过我的东西,我就是想把这些坑都写一遍,然后在自己脑海中过一遍,熟悉一遍。

最高位进位与溢出的区别:

进位标志表示无符号数运算结果是否超出范围.

溢出标志表示有符号数运算结果是否超出范围.

溢出主要是给有符号运算使用的,在有符号的运算中,有如下的规律:

正 + 正 = 正 如果结果是负数,则说明有溢出

负 + 负 = 负 如果结果是正数,则说明有溢出

正 + 负 永远都不会有溢出.

几种情况-------------------------------------------------

1、无符号、有符号都不溢出

2、无符号溢出、有符号不溢出

3、无符号不溢出、有符号溢出

4、无符号、有符号都溢出

这四种情况在前面EFLAG博文中有介绍举例

------------------------------------------------------------

不知不觉,又要凌晨一点了,就这么点东西,花了2个钟头去整理去复习,也真是够花时间的,呵呵,也没啥,算是对自己成长点点滴滴的记录吧,千里之行,始于足下,这些说对我有用吧,我写这些东西的时间都足够去学很多新知识了,说没用吧,又让我对这些旧知识重新拾了一遍而且有了更深刻的理解。不多说了,睡觉!毕竟还得要上班挣钱把小日子过下去。。。

 

版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。2019-08-30,00:40:11。
作者By-----溺心与沉浮----博客园

おすすめ

転載: www.cnblogs.com/Reverse-xiaoyu/p/11432831.html