Difference between revisions of "Overflow Flag"

From Intellivision Wiki
Jump to: navigation, search
(Overflow's complicated!)
(a little more info to make it clearer)
Line 4: Line 4:
 
<center>
 
<center>
 
<table border=1>
 
<table border=1>
<tr><th COLSPAN=4>Addition</TH></tr>
+
<tr><th COLSPAN=5>Addition</TH></tr>
<tr><th>Sign of first operand</th><th>Sign of second operand</th><th>Sign of result</th><th>Resulting value of Overflow Flag</th></tr>
+
<tr><th>Sign of first operand</th><th>Sign of second operand</th><th>Sign of result</th><th>Resulting value of Overflow Flag</th><th>Notes</th></tr>
 
<tr><td>0</td><td>0</td><td>0</td><td>0</td></tr>
 
<tr><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>1</td><td>1</td></tr>
+
<tr><td>0</td><td>0</td><td>1</td><td>1</td><td>Adding two positive numbers produced a negative result</td></tr>
 
<tr><td>0</td><td>1</td><td>0</td><td>0</td></tr>
 
<tr><td>0</td><td>1</td><td>0</td><td>0</td></tr>
 
<tr><td>0</td><td>1</td><td>1</td><td>0</td></tr>
 
<tr><td>0</td><td>1</td><td>1</td><td>0</td></tr>
 
<tr><td>1</td><td>0</td><td>0</td><td>0</td></tr>
 
<tr><td>1</td><td>0</td><td>0</td><td>0</td></tr>
 
<tr><td>1</td><td>0</td><td>1</td><td>0</td></tr>
 
<tr><td>1</td><td>0</td><td>1</td><td>0</td></tr>
<tr><td>1</td><td>1</td><td>0</td><td>1</td></tr>
+
<tr><td>1</td><td>1</td><td>0</td><td>1</td><td>Adding two negative numbers produced a positive result</td></tr>
 
<tr><td>1</td><td>1</td><td>1</td><td>0</td></tr>
 
<tr><td>1</td><td>1</td><td>1</td><td>0</td></tr>
<tr><th COLSPAN=4>Subtraction</TH></tr>
+
<tr><th COLSPAN=5>Subtraction</TH></tr>
<tr><th>Sign of value being subtracted (subtrahend)</th><th>Sign of value being subtracted from (minuend)</th><th>Sign of result</th><th>Resulting value of Overflow Flag</th></tr>
+
<tr><th>Sign of value<br/>being subtracted<br/>(subtrahend)</th><th>Sign of value<br/>being subtracted from<br/>(minuend)</th><th>Sign of result</th><th>Resulting value of Overflow Flag</th></tr>
 
<tr><td>0</td><td>0</td><td>0</td><td>0</td></tr>
 
<tr><td>0</td><td>0</td><td>0</td><td>0</td></tr>
 
<tr><td>0</td><td>0</td><td>1</td><td>0</td></tr>
 
<tr><td>0</td><td>0</td><td>1</td><td>0</td></tr>
<tr><td>0</td><td>1</td><td>0</td><td>1</td></tr>
+
<tr><td>0</td><td>1</td><td>0</td><td>1</td><td>Subtracting a positive number from a negative number gave a positive result.</td></tr>
 
<tr><td>0</td><td>1</td><td>1</td><td>0</td></tr>
 
<tr><td>0</td><td>1</td><td>1</td><td>0</td></tr>
 
<tr><td>1</td><td>0</td><td>0</td><td>0</td></tr>
 
<tr><td>1</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>1</td><td>0</td><td>1</td><td>1</td></tr>
+
<tr><td>1</td><td>0</td><td>1</td><td>1</td><td>Subtracting a negative number from a positive number gave a negative result.</td></tr>
 
<tr><td>1</td><td>1</td><td>0</td><td>0</td></tr>
 
<tr><td>1</td><td>1</td><td>0</td><td>0</td></tr>
 
<tr><td>1</td><td>1</td><td>1</td><td>0</td></tr>
 
<tr><td>1</td><td>1</td><td>1</td><td>0</td></tr>
 
</table></center>
 
</table></center>

Revision as of 00:40, 12 January 2005

The Overflow Flag indicates that the previous operation resulted in a signed number whose sign was inconsistent with the signs of the operands that produced it. For instance, the Overflow Flag gets set when adding two positive numbers produces a negative result, or adding two negative numbers produces a positive result.

The truth table below indicates when the CPU sets or clears the Overflow Flag:

Addition
Sign of first operandSign of second operandSign of resultResulting value of Overflow FlagNotes
0000
0011Adding two positive numbers produced a negative result
0100
0110
1000
1010
1101Adding two negative numbers produced a positive result
1110
Subtraction
Sign of value
being subtracted
(subtrahend)
Sign of value
being subtracted from
(minuend)
Sign of resultResulting value of Overflow Flag
0000
0010
0101Subtracting a positive number from a negative number gave a positive result.
0110
1000
1011Subtracting a negative number from a positive number gave a negative result.
1100
1110