ASSEMBLY NEDİR?
Mikro işlemci komutlarından oluşan programlama dilinin adıdır. Assembly donanıma hükmeden en alt seviyeli programlama dilidir. Kodlar text (metin) olarak yazılırlar. Kodların donanım tarafından yürütülmesi için derlenmesi, yani Hexadecimal (16’lık) makine kodlarına dönüştürülmesi, gerekir.
ASSEMBLER NEDİR?
Tüm programlama dillerinde olduğu gibi yazılan kodlar metin içerikli verilerdir. Donanımlar bu metinleri tanımazlar. Onların anladığı sadece sayısal verilerdir. Bu yüzden kodların Hexadecimal (16’lık) makine kodlarına dönüştürülmesi, gerekir. Assembly komutlarını donanımın anlayabileceği makine kodlarına çeviren derleyiciye Assembler denir.
Assembly ile Nasıl Kod Yazılır?
1. Tüm programlama dilleri gibi Assembly kodları da metin içerikli bir veri olduğu için, herhangi bir metin editöründe (Not Defteri vs.) yazılabilir.
2. Kodlar yazıldıktan sonra dosyanın içindeki verinin Assembly kodu olduğunu belirtmesi açısından dosyalar .asm uzantısı ile kaydedilir.
3. Kaydedilen bu kodlar uygun Assembler ile derlenerek, Hexadecimal (16’lık) makine kodlarına dönüştürülür.
4. Derleme işleminden sonra elde edilen makine kodları da PIC ‘in program belleğine yüklenir ve çalıştırılır.
Assembly ile Yazılan Bir Kodda Neler Bulunur?
· Programın başlangıç bloğunda kodun hangi PIC için yazıldığı bulunmalı (olmazsa olmaz)
· Programın bellekte hangi adresten başlayacağı (Olabilir de, olmayabilir de)
· Yapılacak işlemlerin gerektirdiği tüm komutlar ve etiketler.
· Programın bitiş yeri (olmazsa olmaz)
Assembly İçin Bazı Önemli Yazım Kuralları:
· Assembly kodu yazarken bir satırın açıklama satırı olması ya da yazılan satırın derleyici tarafında kod olarak değerlendirilmemesi için için satırın başına ; (noktalı virgül) koyulur.
· Bir Assembly programı 4 Blok ve 3 Sütundan oluşur.
· Bir sütunun bitip diğer sütunun başlaması derleyicinin arada herhangi bir boşluk algılaması ile olur. Bir kod satırının içerisinde Tab ya da Space ile bırakılacak boşluklar bir sonraki sütuna geçildiğini gösterir. Sütunların daha düzgün ve anlaşılır olması için Tab ile boşluk verilmesi tercih edilir.
Başlık Bloğu:
Bu bölümde genellikle iki satırlık kod bulunabilir:
1. LIST komutu ile programın hangi PIC için yazıldığı tanımlanır. Bu işlem zorunludur. Derleyici kodları okuyup derlemeden önce kodların hangi PIC’e ait olduğunu bilmelidir. Bunun sebebi her PIC’in komut setinin farklı olmasıdır.
Ör:
LIST P=16F84
2. Üretici tarafından her PIC’e ait .Inc uzantılı kütüphane dosyaları oluşturulmuştur. Bu dosyalar MPLAB programı ile birlikte kullanıcılara sunulmaktadır. MPLAB’ı bilgisayarınıza kurduğunuzda C:\Program Files\Microchip\MPASM Suite adresinde bu dosyaları bulabilirsiniz. Bu dosyaların içerisinde RAM’de bulunan File Registerlar’ın etiketleri ve o PIC’e ait daha birçok tanımlama bilgisi bulunmaktadır. INCLUDE komutu ile bu dosyalar kodumuza dâhil edilebilir. Başlık bloğunda Include dosyası dâhil edilmiş kod sayfalarında özel amaçlı kullanılan File Register’ların (STATUS, PORTA, PORTB, vs.) adreslerine ayrıca etiketlen atanmasına gerek yıktur.
Ör:
INCLUDE “P16F84.INC”
Atama Bloğu:
Bilgisayar sistemlerinin doğrudan anladığı tek veri aslında sayısal verilerdir. Bu yüzden bellek birimlerinde yer alan bellek hücrelerini adreslerini de sadece sayısal adresler vasıtasıyla tanıyabilir. Program yazarken RAM’de bulunan File Register’ları defalarca kullanırız. Her kullanışta o registerların adresini sayısal olarak kullanmak zor olabilir. Bu durumu daha kolay ve kullanışlı hale getirmek için sayısal verilerin (File Register adresi ya da başka bir sayısal bilgi) etiket ifadelerine dönüştürülmesi gerekir. Bu işleme etiket ataması denilir.
Etiket atama işlemi EQU komutu ile yapılır.
Ör:
STATUS EQU H’03’
PORTA EQU H’05’
DEGISKEN EQU H’1A’
Etiket nedir? Ne amaçla kullanılır?
Etiketler iki amaç için kullanılan ve kullanıcı tarafından oluşturulmuş ifadelerdir. Etiketler PIC’in komut setinde yer alan bir komut değildir.
1. Bir sayısal verinin (genellikle adreslerin) kullanımını kolaylaştırmak için oluşturulur. Sayısal adres değerleri Etiket ifadelerine EQU komutuyla atanır.
2. Etiketler program akışını yönlendirmek için de kullanılır. Bu etiketlerin önceden tanımlanması gerekmez. Yönlendirme ihtiyacı olan satırların başına yazılırlar. Yönlendirme işleminde GOTO ve CALL komutları kullanılır.
Etiketler Oluşturma Kuralları:
1. Etiketle birinci sütuna yazılır.
2. Sayı ile başlayamaz. Harf ya da alt çizgi ile başlayabilir.
3. İçerisinde rakam ve özel karakter(-/*+…) bulunabilir.
4. Etiketler içerisinde Türkçe karakter kullanılamaz.
5. Herhangi bir Assembly komutu etiket olamaz. (Ör: BSF, MOVLW, CLRF, vs.)
6. En fazla 31 karakterden oluşabilir.
7. BÜYÜK-küçük harfe duyarlıdır.
Assembly’de BÜYÜK-küçük Harf Kullanımı:
1. Etiketlerde BÜYÜK-küçük Harf duyarlılığı VARDIR.
Etiket Örnekleri:
DONGU != dongu
dongu = dongu
DONGU = DONGU
Dongu = Dongu
2. Komutlarda BÜYÜK-küçük Harf duyarlılığı YOKTUR.
Komut Örnekleri:
BSF = bsf = Bsf
Movlw = MOVLW =movlw
ORG Komutu Nedir? Ne amaçla kullanılır?
1. Program komutlarını program belleğinde hangi adresten başlayacağını gösterir.
2. Bir kesme oluştuğunda programın nereden itibaren çalışacağını bildirir.
Ör:
ORG 0x000
ORG 0x004
ASSEMBLY’DE SAYILARIN KULLANIMI
Burada üç farklı sayı sisteminin kullanışını anlatacağız:
· Binary (2’lik) Sayıların Kullanımı:
Genellikle sabit sayı olarak kullanılırlar.
Ör:
MOVLW B’10110110’
· Decimal (10’luk) Sayıların Kullanımı:
Genellikle sabit sayı olarak kullanılırlar.
Ör:
MOVLW D’182’
· Hexadecimal (16’lık) Sayıların Kullanımı:
Hexadeximal sayılar çok farklı şekillerde kullanılabilirler.
0x03
H’03’
03h
03
3
Yukarıdaki beş biçimde de bu sayıların yazılması ile karşılaşabiliriz.
Bu sayılar hem sabit sayı hem de adres bilgisi olarak kullanıldıklarından dolayı önemli olan sayının hangi amaçla kullanıldığıdır. Eğer sayı adres parametre isteyen bir komutla birlikte adres olarak kullanıldıysa sayının 16’lık olduğunu belirten herhangi bir işarete gerek yoktur. Birlikte kullanıldığı komuttan dolayı derleyici onun 16’lık bir sayı olduğunu anlayacaktır.
Fakat sayı sabit sayı olarak kullanıldıysa mutlaka sayının 16’lık olduğunun belirtilmesi gerekir. Bunun için ilk üç formattan biri tercih edilmelidir.
*Adres olarak kullanıma örnek:
STATUS EQU 0x’03’
STATUS EQU H’03’
STATUS EQU 03h
STATUS EQU 03
STATUS EQU 3
Yukarıdaki beş kod da hatasız olarak çalışır.
*Sabit sayı olarak kullanıma örnek:
MOVLW 0x’03’
MOVLW H’03’
MOVLW 03h
Burada sadece ilk üç biçim doğru çalışır, diğer ikisinin 16’lık olduğu algılanamaz.
ASSEMBLY’DE ASCII KARAKKTER KULLANIMI
Çok yaygın olan bir kullanım olmada da assembly kodları içerisinde ASCII karakterleri veri olarak kullanılırlar. Bunun için karakter tek tırnak içerisinde belirtilir.
Ör:
RETLW ‘A’
İlk yorum yapan siz olun