MPASM da Hata Çıkarsa

Posted: 04 Kasım 2007 in Elektronik

 

MPASM Assembler Derlemede Hata Çıkarsa.

Eğer Compile işlemi sonunda errors ≠ 0 ise bu durumda biraz işiniz var demektir. (illaki çay içmek istiyosanız huzursuz huzursuz içebilirsiniz🙂 şimdi bizim burdaki örneğimizde 1ledyak.asm dosyaında hata çıkmadı ama biz bi hata çıkaralım ve üzerinden hata nasıl bulunacak onu açıklayalım. bi dosyayı assembly ederken rapor da aşağıdaki gibi error lar aldık diyelim.

Bu error’un karşısında yazan 4 sayısı sinirimizi bozabilir ama buna da şükretmeliyiz çünkü ya bide sadece hata var deyip geçseydi napacaktık, onu düşünmek lazım.

şimdi derlenen 177 satır kodumuzun içinde 4 tane hata var diyo, napacaz? tabiiki gidip ERR uzantılı dosyayı bulup içine bakacağız.

bu dosyayıda derlemeye çalıştığımız asm dosyasının bulunduğu dizinde bulabiliriz.

Burada örnek dosyamız 1ledyak.asm dosyası olduğu için hata dosyamız da bu dosyanın bulunduğu dizinde 1ledyak.err adında olacaktır)

gidip 1ledyak.err dosyamızı açıyoruz. (not defteri gibi bir metin editörü ile açabilirsiniz).

ve içinde hataların olduğu satırları arıyoruz. hataları bulduktan sonrada tekrar ASM dosyamızı açıp ilgili hataları birer birer gidereceğiz. eğer programınızda kod satırları çoksa biraz zor olabilir, ama genede çözüm var, dosyada metin arama özelliğini kullanarak Error kelimesini arayarak bulabilirsiniz.

şimdi dosyayı açalım ve hataları bulalım.

1) 6 ıncı satırda bi hata var, hata olan kod EQUa =>halbuki bu değişken tanımlama için kullandığımız equ olmalıydı. gidip onu EQU yaparak düzeltiyoruz.

2) 12inci satırda bi hatamız var.
Illegal opcode (PORTB)
=> yalnız bu PORTB nin yazılışında bi hata yok, burda başka bi hata olmalı, gidip 12 inci satıra bakalım.

ve burdan da görüyoruzki 12 inci satır CLRF PORTB olması gerekirken, CLRFg PORTB olarak girilmiş, burda ERR dosyasında CLRFg ifadesini warning olarak bir üst satırda görüyoruz.

(niye CLRFg de warning verip de PORTB de Error verdi?—– cevap: eeeee üüüü kem küm… böyle zor şeyler sormayın yaaa, daha oraları öğrenmedik biz)

neyse, burdaki olay ise şu: CLRF yazdığımızda bu assembler kodu olur, ama CLRFg yazdığınızda bu ifade satırın başında olduğu için bunu ETIKET olarak tanımaya çalışır. (sanırım oraya gelmişiz:))

3,4 ) bu iki hata da 28 ve 40 ıncı satırlarda. fakat esas hata burda değil. Error dosyasında açıklamaya bakarsak "Symbol not previously defined (SAYAC1)" yazıyor.

Burda MPASM diyo ki: "Sayac1 değişkenini daha önce tanımlamadınız. Annem bana dibi görünmeyen suya girme yoksa boğulursun dedi bilmediğim bişeyi kullanamam." O zaman öğretecez demektir, Gidip asm dosyamızda tanımlamaları yaptığımız bölüme bakıyoruz.

ve görüyoruz ki aslında bu hatayı az önce düzeltmişiz. çünkü az önce 6 ıncı satırda bulunan hata SAYAC1 değişkenini tanımlarken bulduğumuz hataydı. ve düzeltmiştik.

Not: Bu hataya düşmeyin.

Bir  hata başka bir hatanın sebebi olabilir. yani derleme sonucunda eğer 20 hata uyarısı aldıysanız derleme yapılırken 20 defa sorunla karşılaşılmış anlamına gelir, yoksa 20 tane hata var anlamına gelmez (ama olabilirde tabii).
hatta yukarıdaki örneğe benzer şekilde bir hata olup çok hata uyarısı alabilirsiniz, örneğin bir değişkenin tanımlanmasında hata varsa ve bu değişkeni biz 20 yerde kullandıysak hatamız 1 yerde olmasına rağmen 20 tane hata uyarısı alırız.

Üstteki hatayı düzelttiğinizde unutup 2 dk sonra aşağılarda bulduğunuz hatadan dolayı tekrar aynı hatayı ararsanız bulamazsınız, en güzeli birkaç düzeltme yaptığınızda bi karmaşa oluşursa MPASM la tekrar derleme yapın ve ERROR dosyasını tekrar açın. bu durumda en son hataları görmüş olacağınızdan sorun yaşamazsınız, uzun uzun hata aramazsınız.

Basamak basamak yani.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s