問題タブ [carryflag]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
250 参照

assembly - なぜキャリーフラグがここに設定されたのですか?

これらのフラグ、特にキャリーとオーバーフロー フラグを使って多くの練習をしているサイトを誰か教えてもらえないかと思っていました。

とにかく私の質問はこれです。

講義ノートを見ていると、5ビットの比較が表示されます

Cmp $12、$6 になる

00110 ~ 01100 に変更可能

キャリー フラグ CF = 1 およびオーバーフロー フラグ OF = 0

Cmp $-6, $-12 は 10100 - 11010 となり、

CF =1 、オーバーフローフラグ OF = 0

オーバーフロー フラグが 0 に設定されていることを理解していると思います。これは、これらの小さな数の減算 (または見方によっては加算) により、2 ^ 5 の範囲の数値を超えることのない小さな数値が得られるためです。

キャリーはどうですか?最後のビットが最後の列/ビットから1を持ち越されたことを意味すると思いましたが、それはキャリーフラグですよね?

私が意味するのは、それが次のようなものだった場合です

それはキャリーフラグが正しく設定される方法ですか?1 は左から 2 番目の 1+1 から来ました。

私の 2 つの例では、これらは一番左の列の上にある 1 ではありません。

どうしたの?

ありがとう。

0 投票する
1 に答える
254 参照

rotation - Rotate と Rotate through Carry の使用法

私はプロセッサを設計しており、頻繁に使用される ALU 操作のリストを作成しました。Rotate と Rotate through Carry はほとんどすべてのプロセッサに見られますが、その理由を知りたいです。暗号化についてのあいまいな言及に加えて、これらがビットシフトにできないことを提供しなければならないことはわかりません。

また、これらの操作の 8 ビット バージョンと 16 ビット バージョン、または 32 ビットのみを実装する理由はありますか? 助けてくれてありがとう。

0 投票する
1 に答える
6328 参照

assembly - 加算と減算によるキャリー フラグの設定とクリア

キャリーフラグをクリアするのに苦労していましたが、減算を使用してクリアする方法を思いつきましたが、加算と減算を使用してキャリーフラグを設定およびクリアする方法について誰かが私と共有できるより良い方法があるかどうか疑問に思っていました.

これは、キャリーフラグを設定およびクリアする必要があるものです。最初に AL から binNum2 を減算すると、元の FFh の値が返されますが、キャリー フラグは AL から binNum2 を再度減算するまで設定されたままです。次に AL を FEh に設定し、キャリー フラグをクリアします。

誰かがキャリーフラグをクリアするより良い方法を持っていますか?

0 投票する
2 に答える
3840 参照

assembly - ASM8086: mul、imul、キャリーフラグ、オーバーフローフラグ

キャリーフラグとオーバーフローフラグの論理がわかりました。しかし、このプログラム (MASM 8086 で書かれたもの) を読んだとき、私は少し戸惑いました。

プログラムの目的は、二次方程式に 2 つの別個の解があるか、2 つの等しい解があるか、まったく解がないかを判断することです。

さて、私の疑問は次のとおりです。なぜ最初の 3 つのチェックでキャリー フラグがテストされ、最後のチェックでオーバーフロー フラグがテストされたのでしょうか。

最後の例では、2 つの符号付き数値の間で減算を行っているため (これは私たちが考えているように)、オーバーフロー フラグをチェックして、オーバーフローがあるかどうか (つまり、数値が interval を超えているかどうか) を確認する必要があります[-2^15,2^15-1]。しかし、たとえば最初のものについては、 を(bb)^2使用しimulます。

したがって、それらを 16 ビットの符号付き数値 (so -2^15 <= bb <= 2^15-1) と見なし、(乗算アルゴリズムで) 少なくとも 1 つの和が / ビットをオンにする場合、乗算は / ビットをオンに設定CFします。OFCFOF

しかし、符号付きの数値を扱うので、オーバーフロー フラグをチェックするべきではありませんか?

また、( )2^15-1=32767に設定bbすると; 等しい場合( ) 。190190^2=36100CF=0bb200200^2=40000CF=1

何故ですか?どなたか詳しく説明していただけないでしょうか。

PS: EMU8086 を使用しています。

0 投票する
0 に答える
196 参照

math - 0xABCD - 0x1234 はキャリー ビットを設定する必要がありますか?

ここでこの質問に出くわしたとき、私は最終試験のために勉強していました:

質問

調べてみると、0x9999 という答えが返ってきました。これは、2 の補数で減算を実行すると、MSB にキャリーがあり、分岐命令がプログラムを loc1 に送信するためです。私の教授によると、答えは 0x9997 で、これはキャリー ビットが設定されていない場合にのみ可能です。調べてみたところ、キャリービットはここに設定する必要があったようです。私は何かを見逃していますか、それとも私の教授が間違いを犯しましたか?

0 投票する
1 に答える
66 参照

bit-manipulation - 2 つの上位 32 ビット整数と 2 つの下位 32 ビット整数で 64 ビット加算を実行します。キャリー ビットを取得するより効率的な方法はありますか?

A と B が下位 32 ビット整数で、T が 32 ビット整数で、A と B の加算によるキャリーを表すとします。T を取得する簡単なロジックをまとめました。

それは機能しますが、これを行うために必要な操作の数 (3 つの右シフト、2 つの加算、2 つの AND) はあまり好きではありません。これをよりクリーン/より効率的にする方法について、ちょっとした専門家からの意見をいただければ幸いです。ありがとう!

現在の問題については、HLSL でできることは限られています。SM4 および SM5 固有のソリューションは気にしませんが、一般的に機能するものにもオープンです。

0 投票する
2 に答える
1785 参照

assembly - キャリー フラグ アセンブリ言語

このコードでキャリー フラグが 255 に設定されているのはなぜですか

オーバーフローとキャリーを混同しているのかもしれませんが、1111 1111 は 2 進数で 255 なので、キャリーは 256 だけに設定すべきではないでしょうか。