We've just updated MediaWiki and its underlying software. If anything doesn't look or work quite right, please mention it to us. --RanAS
SBC (Super FX): Difference between revisions
From SnesLab
(created page) |
(made affected flags more prominent) |
||
(18 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
'''SBC''' ( | {| class="wikitable" style="float:right;clear:right;width:50%" | ||
!colspan="8"|Basic Info | |||
|+ | |||
|'''Addressing Mode''' | |||
|'''Opcode''' | |||
|'''Length''' | |||
|'''ROM Speed''' | |||
|'''RAM Speed''' | |||
|'''Cache Speed''' | |||
|+ | |||
|[[Implied]] (type 1) | |||
|3D6n | |||
|2 bytes | |||
|6 cycles | |||
|6 cycles | |||
|2 cycle | |||
|} | |||
{| class="wikitable" style="float:right;clear:right;width:30%" | |||
!colspan="9"|Flags Affected | |||
|+ | |||
|[[B Flag|B]] | |||
|[[ALT1]] | |||
|[[ALT2]] | |||
|[[O/V]] | |||
|[[Sign Flag|S]] | |||
|[[CY]] | |||
|[[Zero Flag|Z]] | |||
|+ | |||
|0 | |||
|0 | |||
|0 | |||
|O/V | |||
|S | |||
|CY | |||
|Z | |||
|} | |||
'''SBC''' (SuBtract with Carry) is a [[Super FX]] instruction that performs a subtraction with regards to the [[CY|carry flag]]. | |||
Unlike [[ADD (Super FX)|ADD]], [[ADC (Super FX)|ADC]] and [[SUB (Super FX)|SUB]], this one can only be used with registers, not with constant values since since the ALT3 version of SUB is a [[CMP (Super FX)|CMP]] instead. | |||
The [[ALT0]] state is restored. | |||
The source and destination registers should be specified in advance using [[WITH]], [[FROM]], or [[TO]]. Otherwise, R<sub>0</sub> serves as the default. | |||
==== Syntax ==== | |||
<pre> | |||
SBC Rn | |||
</pre> | |||
==== Example ==== | |||
Let: | |||
S<sub>reg</sub> : R<sub>4</sub> | |||
D<sub>reg</sub> : R<sub>6</sub> | |||
R<sub>4</sub> = 5682h | |||
R<sub>5</sub> = 3609h | |||
CY = 1 | |||
After executing SBC R<sub>5</sub>: | |||
R<sub>6</sub> = 2079h | |||
CY = 0 | |||
=== See Also === | === See Also === | ||
* [[SBC]] | * [[SBC]] | ||
* [[ADC (Super FX)]] | * [[ADC (Super FX)]] | ||
* [[SUB (Super FX)]] | |||
* [[ALT1]] | |||
=== Reference === | === Reference === | ||
* [https://archive.org/details/SNESDevManual/book2/page/n264 page 2-9-108 of Book II] of the official Super Nintendo development manual | * 9.78 on [https://archive.org/details/SNESDevManual/book2/page/n264 page 2-9-108 of Book II] of the official Super Nintendo development manual | ||
[[Category:ASM]] | [[Category:ASM]] | ||
[[Category:Super FX]] | [[Category:Super FX]] | ||
[[Category:Two-byte Instructions]] | |||
[[Category:Expects Sreg/Dreg Prearranged]] |
Latest revision as of 09:07, 1 August 2024
Basic Info | |||||||
---|---|---|---|---|---|---|---|
Addressing Mode | Opcode | Length | ROM Speed | RAM Speed | Cache Speed | ||
Implied (type 1) | 3D6n | 2 bytes | 6 cycles | 6 cycles | 2 cycle |
Flags Affected | ||||||||
---|---|---|---|---|---|---|---|---|
B | ALT1 | ALT2 | O/V | S | CY | Z | ||
0 | 0 | 0 | O/V | S | CY | Z |
SBC (SuBtract with Carry) is a Super FX instruction that performs a subtraction with regards to the carry flag. Unlike ADD, ADC and SUB, this one can only be used with registers, not with constant values since since the ALT3 version of SUB is a CMP instead.
The ALT0 state is restored.
The source and destination registers should be specified in advance using WITH, FROM, or TO. Otherwise, R0 serves as the default.
Syntax
SBC Rn
Example
Let:
Sreg : R4 Dreg : R6 R4 = 5682h R5 = 3609h CY = 1
After executing SBC R5:
R6 = 2079h CY = 0
See Also
Reference
- 9.78 on page 2-9-108 of Book II of the official Super Nintendo development manual