Decimal Mode

From SMWiki
Jump to: navigation, search

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.

Personal tools