AVR Assembly -7- INC, DEC, SUB ve COM Komutları

Bu makalemizde temel Assembly komutlarından bazılarını anlatmaya devam edip sonrasında ise çevirici program direktiflerini anlatacağız. Bu anlattığımız komutların her birinin işlemci komutu olduğunu ve makine dilinde ayrı birer karşılıklarının olduğunu belirtelim. Makine dilindeki karşılıklarını AVR Instruction Set Manual adı verilen makine kodu kılavuzunda görebilirsiniz. Bütün işlemcilerin datasheetlerinde makine kodları ve Assembly karşılığı yer almakta ve programcılar da bunları okuyup program yazmaktadır. Bu yazılarda gördüğünüzü başka bir mikrodenetleyici ailesinde de uygulamanız mümkündür. Tek yapmanız gereken o mikrodenetleyiciye ait teknik veri sayfasını okumak ve komutları baştan öğrenmektir.

INC

Bu komut C dilindeki “++” operatörü ile aynı görevi görmektedir. Yani belirtilen yazmacın değerini “1” artırmaktadır. Kullanımı gayet basit olup tek operand almaktadır. Komutun söz dizimi (syntax) şu şekildedir.

Burada Rd hedef yazmacın adı olup genel maksatlı yazmaçlar içinde (R0-R31) herhangi biri olabilir. Örnek kullanımı şu şekilde olabilir.

Yukarıdaki komut R10 = R10 + 1 anlamına gelmektedir. Bu komut sadece bir saat çeviriminde işletilmektedir.

DEC

INC komutunun zıddı olan bu komut C dilindeki “- -” operatörü ile aynı görevi görmektedir. Yani belirttiğimiz yazmaçtaki değeri bir (1) azaltmaktadır. Komutun söz dizimi şu şekildedir.

Burada Rd hedef yazmacın adı olup genel maksatlı yazmaçlar içinde (R0-R31) herhangi biri olabilir. Örnek kullanımı şu şekilde olabilir.

Yukarıdaki komut R20 = R20 – 1 anlamına gelmektedir. Bu komut sadece bir saat çeviriminde işletilmektedir.

SUB

Toplama işleminde ADD komutunu kullandığımız gibi çıkarma işleminde de SUB komutunu kullanırız. Dikkat ederseniz şimdiye kadar anlattığımız bütün komutlar oldukça temel ve basit işleri yürütüyor. C dili öğrenme zahmeti ile karşılaştırınca oldukça AVR Assembly öğrenmenin oldukça pratik olduğunu görüyoruz. Elbette Assembly ile karmaşık program yazmaya kalkmak yerine C öğrenmek daha iyidir. C dilinin tarihine baktığımızda da Assembly dili ile işletim sistemi yazılamayışından dolayı çıktığını görürüz. Assembly ile pek ala işletim sistemi yazılabilir fakat burada insan faktörünü gözardı etmemek gerekir.

SUB komutunun söz dizimi şu şekildedir.

SUB komutu Rr’nin değerini Rd yazmacından çıkarır ve sonuç Rd yazmacında kalır. Örnek bir kullanım şu şekilde olabilir.

COM

Complement kelimesinin kısaltımı olan bu komut “tamlayanı bulma” olarak görev yapar. Yani bu komutu kullandıktan sonra yazmacın değerine göre 8-bit veriyi dolduracak parçayı elde etmiş oluruz. Örneğin 200 değerine COM uyguladığımızda 55 değerini elde ederiz. Bit bazında ise 1 olan bitleri 0 yapar, 0 olan bitleri ise 1 yapar.  Söz dizimi ve kullanımı şu şekildedir.

Görüldüğü gibi AVR Assembly dilinde her komut temel ve belli bir işi yapıyor. Biraz ezbere gibi görünse de en temel kaynağı öğrenirken ezberlemekten başka bir şansımız yok. Burada ezberlemeyi harfi harfine ezberlemek olarak anlamamak gerekir. Komutun ne işe yaradığını ve operandları eksiksiz bilmemiz gereklidir. Bu komutları anlamak için de üzerinde çok kafa yormaya gerek yoktur çünkü donanımın tüm basitliği ve yalınlığı ortadadır. İşin arka planı olmadığı için kafamızda karanlık bir nokta kalmayacaktır.

Bizi Facebook grubumuzda takip etmeyi unutmayın. Bilgili ve öğrenmeye hevesli bir topluluk oluşturmak istiyoruz.

https://www.facebook.com/groups/1233336523490761/

Gökhan Dökmetaş

"Arduino Eğitim Kitabı" ve "Arduino ve Raspberry PI ile Nesnelerin İnterneti" kitaplarının yazarı. Başkent Teknoloji ve Dedektör Merkezi'nde Ar-ge Sorumlusu. Araştırmacı-Yazar.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.