MİKRODENETLEYİCİ-6
BAĞLANMA KOMUTLARI
Program akışını koşul gerektirmeden değiştirmek için
kullanılan bağlanma komutu üç farklı adresleme kipinde kullanılır. Bağlanma
komutlarının listesi çizelge‐3.7 verilmiştir.
SJMP komutunun adresi 8 bitlik bağıl kayıklıktır. —128 ile
+127 arasında değerler alabilir. Negatif kayıklık geri doğru bağlanmaya sebep olur.
Temel adres SJMP komutundan sonraki komutun başlangıç adresidir. Bu komut 2
bayttır. Birinci baytı opkod ikinci baytı da kayıklık değerinden oluşur. LJMP
komutu 16 bit uzunluğunda doğrudan adres kullanır. Buyruk 3 bayt
uzunluğundadır, birinci baytı opkod, ikinci ve üçüncü baytı da adres bilgisini
içerir. Buraya yazılacak olan adres program belleğindeki 64 Kbaytlık alandan
herhangi bir satır adresi olabilir. AJMP komutu 11bit adres içerir. Buyruk 2
bayttan oluşur, birinci baytı opkod ve adresin yüksek değerli 3 bitini, ikinci
baytı ise adresin düşük değerli kısmını gösterir. Komut yürütüldüğünde PC’nin
düşük değerli 11 bitine komutun adresi yazılır yüksek değerli 5 bit değişmez.
Bu durumda hedef adres eğer program belleğini 2 Kbaytlık bloklara ayırırsak o
anda bulunulan blok içerisinde olabilir. Birçok assembler programları JMP
ismini tanır ve uygun adresleme modunu kendisi belirler. JMP @A+DPTR komutu
koşullu dallanma benzeri bir bağlanma komutudur. DPTR bağlanma yapılacak yerin
sıfır nolu satırının adresini içerir. Akümülatör ise dallanılacak olan satırın
bu noktaya olan uzaklığını belirler. Komut yürütüldüğünde Akümülatör ile
DPTR’nin içeriği toplanır ve etkin adres bulunur. Bu komut sadece yüklenen
sayıya göre bir adrese dallanılacak ise kullanılır.
Bu program yürütüldüğünde DPTR’ye bağlanma tablosunun adresi
Akümülatöre ise sıra numarası yüklenecektir. Sıralı bağlanma gerçekleştiğnde
program o noktadan işletilmeye devam edecektir. CALL komutu altprogram çağırma
komutudur. Altprogram sıkça yapılan işlemlerin küçük program haline getirilmiş
halidir. CALL komutu mutlak ve uzun adreslemelerde kullanılır. Uzun adreslemede
3 bayt uzunluğundadır ve belleğin her adresinden altprogram çağırır. Mutlak
adreslemede ise bulunduğu 2Kbaytlık blok bellek içerisinde yer alan
altprogramları çağırabilir. CALL komutu uzun adreslemede LCALL, mutlak adreslemede ACALL adını alır. Birçok
assembler programında CALL yazmanız yeterlidir kendisi uygun olan adresleme
modunu derleme sırasında belirler. Ücretsiz dağıtılan asssembler programların
geçerlilik değeri 2048 bayt olduğu için LCALL komutunu derleyemez.
Alt program
işletildikten sonra ana programa geri dönüş RET komutu ile sağlanır. CALL
komutu işlendikten sonra o andaki PC içeriği saklanarak alt programa gidilir. Alt
program işletildikten sonra alt program sonuna yerleştirilen RET komutu işlenir
ve önceden saklanan geri dönüş adresi PC içerisine alınır ve kalınan yerden ana
program işletilmeye devam eder.
RETI komutu ise RET komutu ile benzer işlem yapar. RETI
komutu kesme servis alt programından ana programa dönüşü sağlar.
KOŞULLU DALLANMA KOMUTLARI
Çizelge‐3.8 de koşullu dallanma komutlarının listesi verilmiştir. Koşullu dallanma komutlarını tümü bağıl adreslemede kullanılır. Bağıl adreslemede kullanılan kayıklık değeri ‐128 ile +127 arası olabilir JZ ve JNZ komutları PSW içerisinde sıfır bayrağı yeralmadığı için Akümülatörün içeriğini denetleyerek dallanıp dallanmayacağını karar veri. JZ komutu Acc’nin tüm bitleri sıfır ise belirtilen adrese dalanır, değilse bir sonraki satırdan devam eder. JNZ komutu ise ACC’nin içeriği sıfırdan farklı ise belirtilen adrese dallanın aksi halde bir sonraki kumuttan devam eder.
DJNZ komutu ise önce belirtilen belleği ya da yazacın içeriğini bir azaltır, eğer sıfır değilse belirtilen satıra dallanır, aksi halde bir sonraki kumuttan devam eder. DJNZ komutu, olay saymak için kullanılır. CJNE, karşılaştır eşit değilse dallan, komutu da döngü kontrolünde kullanılan diğer bir koşullu dallanma komutudur. Bu komutun diğer kullanım alanı ise iki sayıdan büyük olan ile küçük olanı ayırma işlemidir. Eğer birinci sayı, ikinciden küçük ise elde bayrağı kurulur, tersi ise elde bayrağı temizlenir. Koşullu dallanma komutları yalnızca koşul gerçekleşmişse yürütülmektedir. Eğer koşul gerçekleşmemişse bir sonraki komutun yürütülmesine geçilmektedir.
CJNE A, #Sayı, ileri
A ≥ Sayı → C =0
A < Sayı → C =1





Yorumlar
Yorum Gönder