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
Jump to: navigation, search
(made basic info table shorter)
(citing exact line of anomie's doc)
 
(11 intermediate revisions by the same user not shown)
Line 1: Line 1:
{| class="wikitable" style="float:right;clear:right;width:50%"
{| class="wikitable" style="float:right;clear:right;width:60%"
!colspan="8"|Basic Info
!colspan="8"|Basic Info
|+
|+
Line 7: Line 7:
|'''Speed'''
|'''Speed'''
|+
|+
|
|[[Direct Page]] / [[Program Counter Relative]]
|6E
|6E
|3 bytes
|3 bytes
Line 13: Line 13:
when condition is true: 7 cycles
when condition is true: 7 cycles
|+
|+
|
|[[Implied]] (type 1) / [[Program Counter Relative]]
|FE
|FE
|2 bytes
|2 bytes
Line 23: Line 23:
!colspan="8"|Flags Affected
!colspan="8"|Flags Affected
|+
|+
|N
|[[Negative Flag|N]]
|V
|[[Overflow Flag|V]]
|P
|[[Direct Page Flag|P]]
|B
|[[Break Flag|B]]
|H
|[[Half-Carry Flag|H]]
|I
|[[Interrupt Enable Flag|I]]
|Z
|[[Zero Flag|Z]]
|C
|[[Carry Flag|C]]
|+
|+
|.
|.
Line 42: Line 42:
|}
|}


'''DBNZ''' is an [[SPC700]] instruction that decrements memory or the [[Y index register]] and then jumps if that value is nonzero.
'''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 ===
=== See Also ===
Line 48: Line 58:
* [[JNZ]]
* [[JNZ]]


=== External Links ===
=== References ===
* Official Super Nintendo development manual on DBNZ: [https://archive.org/details/SNESDevManual/book1/page/n234 Appendix C-8 of Book I]
# 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:ASM]]
[[Category:SPC700]]
[[Category:SPC700]]
[[Category:Branching Commands]]
[[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

  1. Official Super Nintendo development manual on DBNZ: Table C-15, Appendix C-8 of Book I
  2. anomie's SPC700 doc
  3. lbid, https://github.com/yupferris/TasmShiz/blob/8fabc9764c33a7ae2520a76d80ed7220bb939f12/spc700.txt#L270