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

Bu blogdaki popüler yayınlar

MİKRODENETLEYİCİ-3

MİKRODENETLEYİCİ-4

MİKRODENETLEYİCİ-5