Decrement and jump if non-zero – Zilog Z86193 User Manual
Page 183
Z8
®
CPU
User Manual
UM001604-0108
Instruction Description
176
Decrement and Jump if Non-Zero
Syntax
DJNZ r, dst
Instruction Format
Operation
r
←
r–1;
If r <> 0, PC
←
PC + dst
The specified Working Register being used as a counter is decremented. If the contents of
the specified Working Register are not zero after decrementing, then the relative address is
added to the Program Counter (PC) and control passes to the statement whose address is
now in the PC. The range of the relative address is +127 to –128. The original value of the
PC is the address of the instruction byte following the
DJNZ
statement. When the specified
Working Register counter reaches zero, control falls through to the statement following
the
DJNZ
instruction.
The Working Register being used as a counter must be one of the Registers from
04h
to
EFh
. Use of one of the I/O ports, control or peripheral registers will have undefined results.
Example
DJNZ
is typically used to control a loop of instructions. In this example, 12 bytes are
moved from one buffer area in the register file to another, follow the steps below:
•
Load 12 into the counter (Working Register R6)
•
Set up the loop to perform the moves
Cycles
OPC (Hex)
Address Mode
dst
r
OPC
dst
12 If jump taken
rA
r
10 if jump not taken (R = 0 to F)
r
Flag
Description
C
Unaffected
Z
Unaffected
S
Unaffected
V
Unaffected
D
Unaffected
H
Unaffected
Note:
- Z86233 Z86243 Z86733 Z86743 Z86C02 Z86C04 Z86C08 Z86C15 Z86C21 Z86C30 Z86C31 Z86C33 Z86C36 Z86C40 Z86C43 Z86C61 Z86C62 Z86C63 Z86C65 Z86C83 Z86C90 Z86C91 Z86C93 Z86C96 Z86E02 Z86E03 Z86E04 Z86E06 Z86E07 Z86E08 Z86E15 Z86E21 Z86E30 Z86E31 Z86E33 Z86E34 Z86E40 Z86E43 Z86E44 Z86E61 Z86E63 Z86E83 Z86K15 Z86L02 Z86L04 Z86L08 Z86L16 Z8E000 Z8E001 Z8PE003