We've just updated MediaWiki and its underlying software. If anything doesn't look or work quite right, please mention it to us. --RanAS
DAA (SPC700): Difference between revisions
From SnesLab
m (→External Links: comma) |
(which column correcting) |
||
Line 37: | Line 37: | ||
'''DAA''' (Decimal Adjust for Addition) is an [[SPC700]] instruction that corrects a [[BCD]] sum: | '''DAA''' (Decimal Adjust for Addition) is an [[SPC700]] instruction that corrects a [[BCD]] sum: | ||
# If either the [[carry flag]] is set or the [[accumulator]] exceeds 0x99, add 0x60 to the accumulator and set the carry flag. | # If either the [[carry flag]] is set or the [[accumulator]] exceeds 0x99, add 0x60 to the accumulator and set the carry flag. This corrects the tens column. | ||
# Then, if either the [[half-carry flag]] is set, or the lower nibble of the accumulator exceeds 0x09, add 0x06 to the accumulator. | # Then, if either the [[half-carry flag]] is set, or the lower nibble of the accumulator exceeds 0x09, add 0x06 to the accumulator. This corrects the ones column. | ||
The SPC700 has no [[decimal mode]]. | After DAA, the value in the accumulator will be encoded in binary/hexadecimal. The SPC700 has no [[decimal mode]], so that is why this command is important when working with decimal data. | ||
==== Syntax ==== | ==== Syntax ==== |
Revision as of 19:12, 15 August 2024
Basic Info | |||||||
---|---|---|---|---|---|---|---|
Addressing Mode | Opcode | Length | Speed | ||||
Accumulator | DF | 1 byte | 3 cycles |
Flags Affected | |||||||
---|---|---|---|---|---|---|---|
N | V | P | B | H | I | Z | C |
N | . | . | . | . | . | Z | C |
DAA (Decimal Adjust for Addition) is an SPC700 instruction that corrects a BCD sum:
- If either the carry flag is set or the accumulator exceeds 0x99, add 0x60 to the accumulator and set the carry flag. This corrects the tens column.
- Then, if either the half-carry flag is set, or the lower nibble of the accumulator exceeds 0x09, add 0x06 to the accumulator. This corrects the ones column.
After DAA, the value in the accumulator will be encoded in binary/hexadecimal. The SPC700 has no decimal mode, so that is why this command is important when working with decimal data.
Syntax
DAA DAA A
See Also
External Links
- Official Super Nintendo development manual on DAA: Table C-14 in Appendix C-8 of Book I
- page 3-8-2 of Book I, lbid
- ares source code, SPC700::instructionDecimalAdjustAdd
- anomie: https://github.com/yupferris/TasmShiz/blob/8fabc9764c33a7ae2520a76d80ed7220bb939f12/spc700.txt#L409