可能性の重複:
about assembly CF(Carry) and OF(Overflow) flagキャリーフラグが設定されていません。 x86 ASM
私はキャリーが2つの符号なしダブルワードを追加した後に発生するかどうかを確認しようとしています。このような
:
add edx, eax ; edx will hold the numeric value
wait ; not really needed
jc bad ; jmp to bad if carry bit is set
jo bad ; jmp to bad if overflow bit is set (Yes for signed)
しかし、どちらもオーバーフローフラグやキャリーフラグは、それに応じて設定されています。テスト目的のために、私は追加が32ビットregには大きすぎる値になることを確かめます。 (追加した後、値が折り返されます)
2つの数値を加算するとオーバーフローが発生するかどうかを確認しますか?
add命令を実行する前のedxとeaxの値は何ですか?それらが両方とも0であれば、いいえ、キャリーもオーバーフローも設定されないと思われます。 –
@Mike、私はedxとeaxの値が十分に大きく、 "オーバーフロー"またはキャリーするのに十分な大きさであることを確認することに注意します。ただし、キャリーフラグは設定されません。 – Dacto
'wait'を削除します。次に、[この回答](http://stackoverflow.com/a/8037485/968261)に、整数の加算と減算の例とキャリーとオーバーフローの設定方法を設定します。ほとんどの場合、数字が小さすぎてCF = 1またはOF = 1にならない可能性があります。また、あなたはedxやeaxに必要なデータがロードされていないか、あるいは他のコードバグのためにオーバーフローと非オーバーフローの区別ができません。あなたのコードについて詳しく教えてください。 –