AVR Assembly -8- EQU Direktifi ve Assembler

Assembly’de programlarken Assembler adı verilen çevirici programa ihtiyacımızın olduğunu söylemiştik. Bu program Atmel Studio ile beraber gelmektedir ve proje seçiminde projemizin C mi Assembly dilinde mi yazılacağına biz karar  veririz. Assembly dilini seçtiğimizde artık C derleyicisi ile bağımız kalmaz. İşlemci komutlarından bahsetmişken her AVR mikrodenetleyicide aynı sayıda komut olmadığını belirtelim. Özellikle ATtiny ve AT90 serilerinde daha ilkel komut seti mevcuttur. ATmega serisinde ise daha genişletilmiş komut kümesi kullanılmaktadır. Assembler kullanırken önceki makalelerde verdiğimiz kodları yukarıdan aşağıya doğru metin editörüne yazsak da çevirici programa ait bazi direktifler bulunmaktadır. Bu direktifler dile ait olmayıp çeviri esnasında çevirici program tarafından dikkate alınır. Aynı C dilindeki # ile başlayan direktiflerde olduğu gibi işimizi kolaylaştıran yazılım özelliklerini direktifler ile kullanırız. Bu direktiflerin donanım ile alakası yoktur.

Çevirici direktifleri ile kodumuzu daha okunabilir hale getirebiliriz ve aynı zamanda da daha kolay kod yazabiliriz. Şimdi bu direktiflere bakalım. AVR Assembler kılavuzunu aşağıdan indirip okuyabilirsiniz.

http://ww1.microchip.com/downloads/en/devicedoc/40001917a.pdf

.EQU (equate)

Bu direktif C dilindeki #define direktifi ile aynı görevi görmektedir. #define direktifinin ne kadar kullanışlı olduğunu biliyorsak .EQU direktifinin önemini az çok anlamış olsak da programladığımız dil Assembly olunca gerçekte önemi  #define direktifinden kat kat daha fazladır.

.EQU direktifi ile bir değer sabitine veya adres değerine bir isim verebiliriz. Değer sabiti ile kullanımı şu şekilde olabilir.

Görüldüğü gibi adres ve sabitleri önceden tanımladıktan sonra artık değerlerle pek uğraşmamıza gerek kalmıyor. Alt seviye programlamada işimizi oldukça kolaylaştırıyor. Şimdi ise adreslerle kullanımına bakalım.

Burada 0x03 yani PINB yazmacının adresine PINB adı verildiğini görüyoruz. C dilinde de bu şekilde olup programlama yaparken PINB’nin adresini değil adını kullanırız. Şimdi bu yukarıdaki kodu aldığımız dosyanın bir parçasını sizinle paylaşalım.

 

Bu adlar bize bir yerden tanıdık gelmelidir. Evet, AVR programlamada kullandığımız yazmaçları ve bitleri görmekteyiz. Aslında bu yazmaçlar ve bitler bir değer veya adresleri sembolize etmektedir. C programlamada olduğu gibi Assembly dilinde programlarken de bunları kullanmaktayız. Bütün AVR Studio versiyonlarında göreceğiniz gibi .inc başlık dosyaları içerisinde mikrodenetleyiciye uygun tanımlamalar bulunmaktadır. Assembly programlarken de ihtiyacımız olacağı için bu dosyayı elinizin altında bulundurmanızda yarar var. Aşağıdan ATmega328P mikrodenetleyicisine ait dosyanın tamamına bakabilirsiniz.

https://github.com/DarkSector/AVR/blob/master/asm/include/m328Pdef.inc

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.