We've just updated MediaWiki and its underlying software. If anything doesn't look or work quite right, please mention it to us. --RanAS
Decimal Mode: Difference between revisions
From SnesLab
Vitor Vilela (talk | contribs) (Recovered from SMWiki, improvements are welcome.) |
(tutorial link) |
||
Line 22: | Line 22: | ||
</pre> | </pre> | ||
The decimal mode has been documented more thoroughly in Ersanio's ASM tutorial V2.1. | The decimal mode has been documented more thoroughly in [https://www.smwcentral.net/?p=section&a=details&id=4750&r=0 Ersanio's ASM tutorial V2.1]. |
Revision as of 22:26, 27 April 2023
Decimal mode is one of the SNES CPU's processor flags. Toggling it on/off will only affect the instructions ADC and SBC. To toggle decimal mode on/off, use SED (Set decimal mode) and CLD (clear decimal mode)
Processes
Let's just assume A is 8-bit and holds the value #$00. When one is doing ADC #$0C for example, the following steps will take place.
- Take the parameter after ADC
- Convert it to Decimal
- Add the conversion to A (execute ADC)
- If A turns out to have a hexadecimal number after the addition, convert it it to a decimal number again.
In this case, #$0C gets converted to 12. Since $0C equals to 12, doing ADC #$12 would give you the same result.
Same story with SBC, except SBC subtracts of course.
Example usage of ADC:
LDA #$09 ;A = $09 CLC ;Clear carry flag ADC #$02 ;A = $11
The decimal mode has been documented more thoroughly in Ersanio's ASM tutorial V2.1.