←前へ :  INDEX :  練習問題へ→


  さて、符号付き整数の場合はどうなるでしょう。前にも述べましたが、符号付き整数の場合上位1bitが符号を表しています。したがって8bitの場合、結果が(01111111) 2=7Fhよりも大きくなると、上位1bitが1になり、負の数になってしまいます。これをオーバーフローといいます。「ADD」、「ADC」のどちらも足し算の結果、オーバーフローした場合にオーバーフラグというフラグが1になります。足し算の結果オーバーフローしなかった場合にはオーバーフローフラグは0になります。符号付きの演算ではキャリーフラグは意味を持ちませんが、オーバーフローフラグが意味を持ってきます。逆に符号なし演算ではキャリーフラグが「桁あふれ」の意味を持ちましたが、オーバーフローフラグは意味を持ちません。

  符号なし演算の「ADD」命令で、桁あふれした場合には「ADC」命令を使うことで、その上の桁を計算することができましたが、符号付き演算でオーバーフローした場合は、条件分岐をして自分でエラー処理をするしかありません。本ホームページでは符号なし整数しか扱わないので、この処理については割愛しますが、オーバーフローした際の条件分岐については「条件分岐」で説明します。


←前へ :  INDEX :  練習問題へ→