We've just updated MediaWiki and its underlying software. If anything doesn't look or work quite right, please mention it to us. --RanAS
Overflow Flag: Difference between revisions
From SnesLab
(more bit info) |
(other perspective) |
||
Line 17: | Line 17: | ||
It may be the most misunderstood flag of the [[65c816]] and the 6502.<sup>[2]</sup> It is bit 6 of the [[status register]]. | It may be the most misunderstood flag of the [[65c816]] and the 6502.<sup>[2]</sup> It is bit 6 of the [[status register]]. | ||
There is no [[SEV]] instruction to directly set the overflow flag, but the 6502 and 65c02 do have a hardware signal to set it. Unfortunately this hardware signal was removed on the 65c816. | There is no [[SEV]] instruction to directly set the overflow flag, but the 6502 and 65c02 do have a hardware signal to set it. Unfortunately this hardware signal was removed on the 65c816 (or fortunately, as now it can no longer get set by accident.) | ||
On the [[SPC700]] it can be cleared with [[CLRV]] and is set whenever the [[half-carry flag]] is set. | On the [[SPC700]] it can be cleared with [[CLRV]] and is set whenever the [[half-carry flag]] is set. |
Revision as of 16:05, 24 July 2024
The Overflow Flag (V) is affected only by the following eight instructions:
- ADC (indicates signed sum overflowed)
- SBC (indicates signed difference underflowed)
- CLV (always clears it)
- BIT (becomes bit 6 or bit 14 of operand)
- PLP
- RTI
- SEP (might set it)
- REP (might clear it)
Here is how it behaves:
- When the accumulator is 8 bits wide, V indicates whether the sum/difference of ADC/SBC is outside the range of -128 to 127.
- When the accumulator is 16 bits wide, V indicates whether the result of ADC/SBC is outside the range of -32768 to 32767.
It may be the most misunderstood flag of the 65c816 and the 6502.[2] It is bit 6 of the status register.
There is no SEV instruction to directly set the overflow flag, but the 6502 and 65c02 do have a hardware signal to set it. Unfortunately this hardware signal was removed on the 65c816 (or fortunately, as now it can no longer get set by accident.)
On the SPC700 it can be cleared with CLRV and is set whenever the half-carry flag is set.
See Also
References
- Eyes & Lichty, page 439: https://archive.org/details/0893037893ProgrammingThe65816/page/439
- Clark, Bruce. http://www.6502.org/tutorials/vflag.html
- Shirriff, Ken. https://www.righto.com/2012/12/the-6502-overflow-flag-explained.html?m=1
- lbid. https://www.righto.com/2013/01/a-small-part-of-6502-chip-explained.html?m=1
- Labiak. https://archive.org/details/Programming_the_65816/page/n118
- Pickens, John. NMOS 6502 Opcodes. http://www.6502.org/tutorials/6502opcodes.html#VFLAG