Djnz Decrement And Jump If Non-Zero - Samsung S3C80A5B User Manual

8-bit cmos
Table of Contents

Advertisement

S3C80A5B
DJNZ
— Decrement and Jump if Non-Zero
DJNZ
r,dst
r ← r – 1
Operation:
If r ≠ 0, PC ← PC + dst
The working register being used as a counter is decremented. If the contents of the register are not
logic zero after decrementing, the relative address is added to the program counter and control
passes to the statement whose address is now in the PC. The range of the relative address is
+127 to –128, and the original value of the PC is taken to be the address of the instruction byte
following the DJNZ statement.
NOTE:
Flags:
No flags are affected.
Format:
r | opc
Example:
Given: R1 = 02H and LOOP is the label of a relative address:
SRP
DJNZ
DJNZ is typically used to control a "loop" of instructions. In many cases, a label is used as the
destination operand instead of a numeric relative address value. In the example, working register R1
contains the value 02H, and LOOP is the label for a relative address.
The statement "DJNZ R1, LOOP" decrements register R1 by one, leaving the value 01H. Because
the contents of R1 after the decrement are non-zero, the jump is taken to the relative address
specified by the LOOP label.
In case of using DJNZ instruction, the working register being used as a counter should be set at
the one of location 0C0H to 0CFH with SRP, SRP0, or SRP1 instruction.
dst
#0C0H
R1,LOOP
Bytes
Cycles
2
8 (jump taken)
8 (no jump)
INSTRUCTION SET
Opcode
Addr Mode
(Hex)
dst
rA
RA
r = 0 to F
6-39

Advertisement

Table of Contents
loading

Table of Contents