We've just updated MediaWiki and its underlying software. If anything doesn't look or work quite right, please mention it to us. --RanAS
CBNE (SPC700): Difference between revisions
From SnesLab
(created page) |
(superscripted 3) |
||
(21 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
'''CBNE''' is an [[SPC700]] instruction that performs a comparison and then | {| class="wikitable" style="float:right;clear:right;width:60%" | ||
!colspan="8"|Basic Info | |||
|+ | |||
|'''Addressing Mode''' | |||
|'''Opcode''' | |||
|'''Length''' | |||
|'''Speed''' | |||
|+ | |||
|[[Direct Page]] / [[Program Counter Relative]] | |||
|2E | |||
|3 bytes | |||
|when condition is false: 5 cycles | |||
when condition is true: 7 cycles | |||
|+ | |||
|[[Direct Page Indexed by X]] / [[Program Counter Relative]] | |||
|DE | |||
|3 bytes | |||
|when condition is false: 6 cycles | |||
when condition is true: 8 cycles | |||
|} | |||
{| class="wikitable" style="float:right;clear:right;width:30%" | |||
!colspan="8"|Flags Affected | |||
|+ | |||
|[[Negative Flag|N]] | |||
|[[Overflow Flag|V]] | |||
|[[Direct Page Flag|P]] | |||
|[[Break Flag|B]] | |||
|[[Half-Carry Flag|H]] | |||
|[[Interrupt Enable Flag|I]] | |||
|[[Zero Flag|Z]] | |||
|[[Carry Flag|C]] | |||
|+ | |||
|. | |||
|. | |||
|. | |||
|. | |||
|. | |||
|. | |||
|. | |||
|. | |||
|} | |||
'''CBNE''' (Compare Branch Not Equal) is an [[SPC700]] instruction that performs a comparison between the [[accumulator]] and a [[direct page]] value and then branches if they are not equal. The direct page index is the first operand and also the first byte immediately following the opcode, and the relative branch offset is the second operand, the second byte following the opcode.<sup>[3]</sup> | |||
No flags are affected. | |||
==== Syntax ==== | |||
<pre> | |||
CBNE dp, rel | |||
CBNE dp+X, rel | |||
</pre> | |||
Where rel is given in two's complement. | |||
=== See Also === | |||
* [[DBNZ]] | |||
* [[BNE (SPC700)]] | |||
=== External Links === | |||
# Official Super Nintendo development manual on CBNE: Table C-15, [https://archive.org/details/SNESDevManual/book1/page/n233 Appendix C-8 of book I] | |||
# anomie: https://github.com/yupferris/TasmShiz/blob/8fabc9764c33a7ae2520a76d80ed7220bb939f12/spc700.txt#L372 | |||
# lbid: https://github.com/yupferris/TasmShiz/blob/8fabc9764c33a7ae2520a76d80ed7220bb939f12/spc700.txt#L270 | |||
[[Category:ASM]] | [[Category:ASM]] | ||
[[Category:SPC700]] | [[Category:SPC700]] | ||
[[Category:Branching Commands]] |
Latest revision as of 19:31, 15 August 2024
Basic Info | |||||||
---|---|---|---|---|---|---|---|
Addressing Mode | Opcode | Length | Speed | ||||
Direct Page / Program Counter Relative | 2E | 3 bytes | when condition is false: 5 cycles
when condition is true: 7 cycles |
||||
Direct Page Indexed by X / Program Counter Relative | DE | 3 bytes | when condition is false: 6 cycles
when condition is true: 8 cycles |
Flags Affected | |||||||
---|---|---|---|---|---|---|---|
N | V | P | B | H | I | Z | C |
. | . | . | . | . | . | . | . |
CBNE (Compare Branch Not Equal) is an SPC700 instruction that performs a comparison between the accumulator and a direct page value and then branches if they are not equal. The direct page index is the first operand and also the first byte immediately following the opcode, and the relative branch offset is the second operand, the second byte following the opcode.[3]
No flags are affected.
Syntax
CBNE dp, rel CBNE dp+X, rel
Where rel is given in two's complement.
See Also
External Links
- Official Super Nintendo development manual on CBNE: Table C-15, Appendix C-8 of book I
- anomie: https://github.com/yupferris/TasmShiz/blob/8fabc9764c33a7ae2520a76d80ed7220bb939f12/spc700.txt#L372
- lbid: https://github.com/yupferris/TasmShiz/blob/8fabc9764c33a7ae2520a76d80ed7220bb939f12/spc700.txt#L270