DJNZ
instrucción: Decrementa un valor y salta a la dirección si no es cero.
DJNZ
Value,
Address
#
Resultado: Value-1 se escribe en Value.
Value
(campo-d) es el registro a decrementar y probar.
Address
(campo-s) es el registro o literal de 9-bit cuyo valor es la dirección a saltar
cuando el decrementado Value no es cero.
Tabla Opcode:
–INSTR– ZCRI –CON–
–DEST–
111001 001i 1111 ddddddddd sssssssss
Tabla de verdad:
Destino
$0000_0002; 2
$0000_0001; 1
$0000_0000; 0
Explicación
DJNZ
decrementa el registro Value y salta a Address si el resultado no es cero.
Cuando se específica el efecto
Cuando se especifica el efecto
un prestado no signado (sobre flujo 32-bit). El resultado decrementado se escribe en Value a
menos que se especifique
DJNZ
requiere un monto diferente de ciclos de reloj dependiendo si tiene o no que saltar. Si
tiene que saltar toma 4 ciclos d reloj, si no salta entonces toma ocho ciclos de reloj. Como el
DJNZ
ciclo que utiliza
necesita ser rápido, se optimiza de esta forma para velocidad.
3: Assembly Language Reference –
–SRC–
Resultado Z
Result = 0
Entrada
Fuente
$----_----; -
$----_----; -
$----_----; -
WZ
, la bandera Z se activa (1) si el Value decrementado es cero.
WC
, la bandera C se activa (1) si el resultado del decremento es
NR
.
Resultado C
Unsigned Borrow
Z C Efectos
Destino
wz wc
- -
$0000_0001; 1
wz wc
- -
$0000_0000; 0
wz wc
- -
$FFFF_FFFF; -1
DJNZ
Resultado
Ciclos
Written
4 or 8
Salida
Z C
0
0
1
0
0
1