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
rOPC 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: