We've just updated MediaWiki and its underlying software. If anything doesn't look or work quite right, please mention it to us. --RanAS
DBNZ (SPC700): Difference between revisions
From SnesLab
(created page) |
(citing exact line of anomie's doc) |
||
(21 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
'''DBNZ''' is an [[SPC700]] | {| class="wikitable" style="float:right;clear:right;width:60%" | ||
!colspan="8"|Basic Info | |||
|+ | |||
|'''Addressing Mode''' | |||
|'''Opcode''' | |||
|'''Length''' | |||
|'''Speed''' | |||
|+ | |||
|[[Direct Page]] / [[Program Counter Relative]] | |||
|6E | |||
|3 bytes | |||
|when condition is false: 5 cycles | |||
when condition is true: 7 cycles | |||
|+ | |||
|[[Implied]] (type 1) / [[Program Counter Relative]] | |||
|FE | |||
|2 bytes | |||
|when condition is false: 4 cycles | |||
when condition is true: 6 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]] | |||
|+ | |||
|. | |||
|. | |||
|. | |||
|. | |||
|. | |||
|. | |||
|. | |||
|. | |||
|} | |||
'''DBNZ''' (Decrement Branch Non-Zero) is an [[SPC700]] instruction that decrements a [[direct page]] location or the [[Y index register]] and then jumps if that value is nonzero. The direct page index is the first operand and also the first byte immediately following the opcode. The relative branch offset is the second operand, the second byte following the opcode.<sup>[3]</sup> | |||
No flags are affected. | |||
==== Syntax ==== | |||
<pre> | |||
DBNZ dp, rel | |||
DBNZ Y, rel | |||
</pre> | |||
Where rel is given in two's complement. | |||
=== See Also === | |||
* [[CBNE]] | |||
* [[JNZ]] | |||
=== References === | |||
# Official Super Nintendo development manual on DBNZ: Table C-15, [https://archive.org/details/SNESDevManual/book1/page/n233 Appendix C-8 of Book I] | |||
# [https://www.romhacking.net/documents/197 anomie's SPC700 doc] | |||
# lbid, https://github.com/yupferris/TasmShiz/blob/8fabc9764c33a7ae2520a76d80ed7220bb939f12/spc700.txt#L270 | |||
[[Category:ASM]] | |||
[[Category:SPC700]] | |||
[[Category:Branching Commands]] |
Latest revision as of 19:33, 15 August 2024
Basic Info | |||||||
---|---|---|---|---|---|---|---|
Addressing Mode | Opcode | Length | Speed | ||||
Direct Page / Program Counter Relative | 6E | 3 bytes | when condition is false: 5 cycles
when condition is true: 7 cycles |
||||
Implied (type 1) / Program Counter Relative | FE | 2 bytes | when condition is false: 4 cycles
when condition is true: 6 cycles |
Flags Affected | |||||||
---|---|---|---|---|---|---|---|
N | V | P | B | H | I | Z | C |
. | . | . | . | . | . | . | . |
DBNZ (Decrement Branch Non-Zero) is an SPC700 instruction that decrements a direct page location or the Y index register and then jumps if that value is nonzero. The direct page index is the first operand and also the first byte immediately following the opcode. The relative branch offset is the second operand, the second byte following the opcode.[3]
No flags are affected.
Syntax
DBNZ dp, rel DBNZ Y, rel
Where rel is given in two's complement.
See Also
References
- Official Super Nintendo development manual on DBNZ: Table C-15, Appendix C-8 of Book I
- anomie's SPC700 doc
- lbid, https://github.com/yupferris/TasmShiz/blob/8fabc9764c33a7ae2520a76d80ed7220bb939f12/spc700.txt#L270