S3C84E5/C84E9/P84E9

INSTRUCTION SET

 

 

DJNZ — Decrement and Jump if Non-Zero

DJNZr,dst

Operation: r ¬ r – 1

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 +

127to – 128, and the original value of the PC is taken to be the address of the instruction byte following the DJNZ statement.

NOTE: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.

Flags: No flags are affected.

Format:

r opc

dst

 

 

Bytes

Cycles

Opcode

Addr Mode

 

 

(Hex)

dst

2

8 (jump taken)

rA

RA

 

8 (no jump)

r = 0 to F

 

Example: Given: R1 = 02H and LOOP is the label of a relative address:

SRP #0C0H

DJNZ R1,LOOP

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, the working register R1 contains the value 02H, and LOOP is the label for a relative address.

The statement "DJNZ R1, LOOP" decrements the 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.

6-39

Page 166
Image 166
Samsung S3C84E5 user manual Djnz Decrement and Jump if Non-Zero, DJNZr,dst Operation r ¬ r, SRP #0C0H Djnz R1,LOOP