Propeller Manual

Table Of Contents
DJNZ – Assembly Language Reference
DJNZ
Instruction: Decrement value and jump to address if not zero.
DJNZ Value, # Address
Result: Value-1 is written to Value.
Value (d-field) is the register to decrement and test.
Address (s-field) is the register or a 9-bit literal whose value is the address to jump to
when the decremented Value is not zero.
Opcode Table:
–INSTR– ZCRI –CON– –DEST– –SRC– Z Result C Result Result Clocks
111001 001i 1111 ddddddddd sssssssss
Result = 0 Unsigned Borrow Written 4 or 8
Concise Truth Table:
In Out
Destination Source Z
C
Effects
Destination Z C
$0000_0002; 2 $----_----; - -
-
wz wc
$0000_0001; 1 0 0
$0000_0001; 1 $----_----; - -
-
wz wc
$0000_0000; 0 1 0
$0000_0000; 0 $----_----; - -
-
wz wc
$FFFF_FFFF; -1 0 1
Explanation
DJNZ decrements the Value register and jumps to Address if the result is not zero.
When the
WZ effect is specified, the Z flag is set (1) if the decremented Value is zero. When
the
WC effect is specified, the C flag is set (1) if the decrement results in an unsigned borrow
(32-bit overflow). The decremented result is written to Value unless the
NR effect is specified.
DJNZ requires a different amount of clock cycles depending on whether or not it has to jump.
If it must jump it takes 4 clock cycles, if no jump occurs it takes 8 clock cycles. Since loops
utilizing
DJNZ need to be fast, it is optimized in this way for speed.
Page 290 · Propeller Manual v1.1