JR
Komut Detayları
Komut | Süre (ts) | Açıklama | Bayrak Etkisi | Yapılan İş |
---|---|---|---|---|
JR C,n | 12,7 | Elde=1 (carry=1) ise PC+n'ye göreli zıpla. | -------- | c=1 ise PC=PC+n |
JR n | 12 | PC+n'ye koşulsuz göreli zıpla. | -------- | PC=PC+n |
JR NC,n | 12,7 | Elde=0 (carry=0) ise PC+n'ye göreli zıpla | -------- | c=0 ise PC=PC+n |
JR NZ,n | 12,7 | Sıfır değil (Z=0) ise PC+n'ye göreli zıpla. | -------- | z=0 ise PC=PC+n |
JR Z,n | 12,7 | Sıfır (Z=1) ise PC+n'ye göreli zıpla. | -------- | z=1 ise PC=PC+n |
Açıklama ve Örnekler
Bu sıçrama komutlarında, hedef adresin kendisi değil, adrese olan uzaklık belirtilir. Bu uzaklık parametresi -geçen derste gördüğümüz "d:mesafe" ile gösterilir- 0-127 arasındaysa, şıçrama ileri yöndedir. 128-255 arasında ise geri yöndedir. Dolayısıyla bu komutlarla ancak program içerisinde kısa mesafelere sıçrayabilirsiniz.
Sapılacak adres gerideyse kaç bayt olduğu 256-d formülüyle bulunur. Programlarımızı yazarken etiket kullandığımız için kaç bayt ileri veya geri gittiğimiz program derlenirken hesaplanır. Eğer mesafe sınırlar dışındaysa derleyici hata verecektir. Göreceli sıçrama komutu JR ile gösterilir ve Jump Relative'nin kısaltmasıdır. Eğer yazdığınız program kısa ve programı sürekli çalıştıracaksanız JR komutunu, uzunsa JP komutunu kullanabilirsiniz.
Örnek : start ld a,0 loop1 ld b,1 ... ... Aradaki program 128 bayttan uzun olmamalıdır. ... jr loop1
Zx Spectrum ULA için komut detayı
JR cc,n JR n (48k/+2) pc:4,pc+1:3,[pc+1:1 x 5] (+2AB/+3)pc:4,pc+1:3,[5]