オーバーフローフラグ

オーバーフローフラグとは、加算命令で加算する二つの1ワードの値を符号ビット付き2進数として扱い、その加算結果が符号ビット付き2進数で表せる範囲を超えて、算術オーバーフローした場合に1になるフラグのことです。

オーバーフローフラグは、ステータスレジスタのフラグの一つです。

オーバーフローフラグが1になる実例

最大値を超える場合

例えば、以下は、1ワードが4ビットの符号ビット付き2進数の0111(10進数で7)と0001(10進数で1)を加算命令で加算する例です。

  0111
+ 0001
------
  1000

実際の答えは、10進数で8ですが、扱える値の範囲を超えているため、答えが1000(10進数でー8)になっています。

最大値を超える場合は、キャリーフラグが0で最上位ビットへの桁上がりがある場合にオーバーフローフラグが1になります。

最小値を下回る場合

例えば、以下は、1ワードが4ビットの符号ビット付き2進数の1000(10進数でー8)と1111(10進数でー1)を加算命令で加算する例です。

  1000
+ 1111
------
 10111

実際の答えは、10進数でー9ですが、扱える値の範囲を超えているため、答えが0111(10進数で7)になっています。

最小値を下回る場合は、キャリーフラグが1で最上位ビットへの桁上がりがない場合にオーバーフローフラグが1になります。