DJNZ
Komut detayları
Komut | Süre (ts) | Açıklama | Bayrak Etkisi | Yapılan İş |
---|---|---|---|---|
DJNZ n | 13,8 | B'yi bir azalt, B sıfır olmadı ise göreli sıçra. | -------- | B=0 olana kadar B=B-1 ve göreli sıçra |
Açıklama
DJNZ kısaltmasının açılımı şu şekildedir: "Decrease and Jump if Not Zero" (azalt ve sıfır olmadıysa sıçra).
DJNZ mesafe komutu özel olarak B registeri içindir. B registerinin değerini bir azalt, registerin değeri "0" olmadıysa göreli sıçra demektir.
Dikkat edilmesi gereken nokta djnz B'yi önce azaltıp sonra test eder. Yani B değeri 1 ise, DJNZ B'yi 0'a getirip, sıçramaz, sonraki komuttan devam edilir. Bu durumda B=8 ise, aradaki döngünün kapsadığı kod 9 değil, 8 kere tekrar edilecektir.
Örnek Kod
DJNZ, basic'deki for...next döngüsüne benzer. Örnek:
ld B,16 ; For b=16 to 1 STEP -1 gibi loop1 ... ; Buraya tekrar edecek kodu ekleyin DJNZ loop1
B'ye yüklediğiniz rakam kadar tur atacak bu program.
Tabiiki bu halde maksimum 255 tekrar yapılabilir.
Kaynak: http://retrojen.org/pano/index.php?topic=189.msg1122#msg1122
Ayrıca Bakınız
Zx Spectrum Ula Gecikmesi Komut Detayı
DJNZ n(48k/+2) pc:4,ir:1,pc+1:3,[pc+1:1 x 5] = 8/13ts , (+2AB/+3) pc:5,pc+1:3,[5] = 8/13ts (ir gecikmesi yoktur)