Mpasm'de Hatalar

Salvo

Kayıtlı Üye
MPASM'DE HATALAR
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 istiyorsanız huzursuz huzursuz içebilirsiniz şimdi bizim buradaki örneğimizde 1ledyak.asm dosyasında hata çıkmadı ama biz bir hata çıkaralım ve üzerinden hata nasıl bulunacak onu açıklayalım. Bir 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 ne yapacaktık, onu düşünmek lazım. Şimdi derlenen 177 satır kodumuzun içinde 4 tane hata var diyor, ne yapacağız? Tabii ki 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). İç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 gene de çö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ı. Onu EQU yaparak düzeltiyoruz.

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

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

(niye CLRFg de warning verip de PORTB de Error verdi? 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.
3,4 ) bu iki hata da 28 ve 40 ıncı satırlarda. fakat esas hata burada değil. Error dosyasında açıklamaya bakarsak "Symbol not previously defined (SAYAC1)" yazıyor.

Burada MPASM diyor ki: "Sayac1 değişkenini daha önce tanımlamadınız. asm dosyamızda tanımlamaları yaptığımız bölüme bakıyoruz. 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.

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 bir 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.
 
bayigram takipçi satın al instagram beğeni satın al instagram takipçi satın al tiktok takipçi satın al Buy Followers bugün haber
vozol
Geri
Üst