Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

Assembly 'mi ? PibasicPromu ?

Başlatan programmer07, 06 Şubat 2007, 02:35:56

programmer07

Bu iki dilin arasındaki fark nedir arkadaslar.

yalnayak

ustunluk konusu apayri bir tartismaya donusuyo..
ikisinin arasindaki en onemli fark bence microchip in ilk ornek yazilimlarini asm olarak vermesi.
asm ana,temelini olusturuyo olsada dezavantajlari var.ama yinede yeni okumaya baslayan biri icin cin ali....
Kızımın iffeti batmakta rezîlin gözüne... Acırım tükürüğe billâhi, tükürsem yüzüne..! MEHMED AKİF ERSOY  Kardan Adaminla,GUNES'e calim mi satiyorsun?

alieren

merhaba programmer07,
sadece pic basic pro ogrenmekle iyi bir basari saglamak zor. bunn icin oncelikle assebly i biraz calismak yararli olur. daha sonra pic basic le program yazarken, basic ile yapilamayan yada assemly ile yapilmasi durumunda avantajli oldugunu dusundugun durumlarda, pic basic icerisine assebly ile ekleme yapilabiliniyor.basic dili ust seviye bir dil olmasi itibariyle programlayicinin donanimla fazlaca ugrasmasini gerektirmiyor,ama assembly de ise pic in neredeyse tum donanimini bilmen sart. assemly ile istedigin programi yazabilmek icin bu konuda cok iyi olman gerekiyor, basic ise oyle değil. daha bir cok karsilastirma yapilabilinir ama kendi tecrubeme dayanarak sana once biraz assemly calisman ve sonra da basic calismani tavsiye ediyorum.
saygilar

XX_CİHAN_XX

Alıntı yapılan: "yalnayak"ustunluk konusu apayri bir tartismaya donusuyo..
ikisinin arasindaki en onemli fark bence microchip in ilk ornek yazilimlarini asm olarak vermesi.
asm ana,temelini olusturuyo olsada dezavantajlari var.ama yinede yeni okumaya baslayan biri icin cin ali....
+1
Alıntı yapılan: "alieren"
basic dili ust seviye bir dil olmasi itibariyle programlayicinin donanimla fazlaca ugrasmasini gerektirmiyor,ama assembly de ise pic in neredeyse tum donanimini bilmen sart. assemly ile istedigin programi yazabilmek icin bu konuda cok iyi olman gerekiyor, basic ise oyle değil.
Evet assembly makine dilidir.Basic gibi üst seviye dillerinde(bunu üstünlük olarak algılamayın tabi) hazır fonksiyonlardan yararlanılarak kolay programlama yapılır.Basic dilini kullanan bircok kişi o fonksiyonu kullanırken arka planda ne yapıldıgını bilmez.Sadece o fonksiyonun ne iş yaptıgını bılır ve uygular.Bunun dezavantajları oldugu gibi avantajlarıda vardır.Fakat bana göre programcılıkta bu kısıtlama ve o fonksiyonlara baglı kalma cok kotü bir durumdur.Dolayısıyla assembly ile butun bu kısıtlamalardan kurutulursun.
Yaşasın özgür programcılık :D
Fakat bir süre sonra assembly seni zorlar basic gibi dillerde bir iki satırda yaptıgın iş assembly de satırlar sürer.Assembly den vaz gecemeyen bazı emektarlar  8)  bu işi hazır makrolar ve altprogramlar olusturarak hallederler fakat nede olsu bir hammaliyettir.
üst seviye dillerinde asm ye geçiş olmasaydı şiddetle kınar ve yanaşmayın derdim :)
Ama öyle değil tabiiki...
Dolayısıyla bende herkes gibi sağlam bir şekilde assembly ile başlayıp ,belki biraz zorlanarak ama sindirerek öğrenip assembly den sonra eger hammaliyet oldugunu düşünüyorsan üst seviye dillere daha bilinçli bir şekilde geçmeni öneriririm.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

Cetinal

yani bu şekil karşılştırma anlamsız
elbette asm yi iyi bile asm yi
PBP yu iyi bilen PBP  önerip savunucak
Asm direk PIC in iç yapısına hitap eden bi dil dir
Diğer diller ise (Basic C C++ gibi) asm dilini kontrol eder

XX_CİHAN_XX

Alıntı yapılan: "RoMeO123"yani bu şekil karşılştırma anlamsız
elbette asm yi iyi bile asm yi
PBP yu iyi bilen PBP  önerip savunucak
öyle bir durum yok dikkat ederseniz her ikisininde işlevselliğinden bahsediliyor.Tabiiki o veya bu iyi diye konusulamaz soru yanlıs sorulmus!
Fakat burada dogru yonlendırme yapmaya calısıyoruz.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

ilker_32

pic öğrenmeye karar verdiğimde elime ilk geçen kitaba çalışmıştım. (16f84)
şansıma ASM dili gelmiş. bir süre sonra olayı kavramaya başlamıştım.
tabi ilk öğrenmeye başladığımda basit gelmişti. Ama sonradan işin içinden çıkılmaz birhal almaya başlamıştı. ama ALLAH'tan üzerinden 5-6 sene geçti.
şimdi işimi iyi kötü görüyor. iyi bir proje hazırlamaya kalktığında kodlar sayfalarca sürüyor. Yaz yaz bitmiyor ben bile bıktım bir ara bu yüzden dil seçerken iyi düşün ben düşünmeden yaptım kafayı sıyırdım. ASM dilini kötülemiyorum nedense yinede işimi görüyor. sadece kötü yanı bu işe başlarken düşünmememdi. bir dile başladığındada bırakamıyorsun o dili kavramadan başka bir dile geçmekte zaman kaybı oluyor. şu anda yavaş yavaş c'ye başladım.  :roll:

Eagle_Tim

Kalıplaştırılmış asm kodları ile işlem yapan derleyiciler asm gibi insan zekasına en yüksek derece de verim sağlayamazlar çünki o kalıplar dışında ve o programı hazırlayanların düşünemediği bir işlev yapmak gerektiğinde bu derleyiciler yetersiz kalır bu sebeple bunlarda da asm ye geçiş açık bırakılmış asm de yazılan kodun farkı en basit olarak şudur ; asmyi ne kadar iyi biliyorsanız ve program algoritması konusunda ne kadar tecrübeliyseniz yazdığınız kod da okadar kısa sürer ve program da bu kısalığa göre hızlı çalışır ancak diğerlerinde isteğiniz kadar iyi bilin kalıp asmlerin boyutunun altında bir program yazamazsınız hızda ona göre azalır bu yüzden asm yi öğrenmek ve kullanmak çok yararlıdır fakat diğerleride kısa zamanda büyük programlar yazmaya olanak sağlar.
örneğin; asmde tuğlayı siz üretir sonra duvar yaparsınız ama diğerlerinde tuğlalar hazırdır direkt örmeye başlarsınız tek kötü yanı ise asmde tuğlayı istediğiniz boyutta yaparsınız ama diğerlerinde boyut bellidir dışına çıkamazsınız    :D        
iyi çalışmalar...
Software and Hardware Design...

eem_murat

uzun süre robot projelerimde pbasic kullandım fakat sıkıntılı olan taraf kesmelerde başgösteriyor.. ama pbasic dilinde proğram yazmak çok zevkli çünkü daha basit ve insan mantığına daha uygun gibi geliyor bana.
bence assembly bilmek büyük avantaj ama pbasic daha hızlı çozum .....

CLR

Oldukça iyi derecede assembly biliyorum, bir çok projemi asm ile yaptım,
program uzadıkça, include dosyaları ile başka programları ana programa dahil ettim bu bana bayağı bir kolaylık sağladı ama yinede çok uzun programlarda altprogramları takip etmeyi bırakın etiket vermekte bile zorlandım çünkü başka bir yerde aynı ismi kunlandığım ve bu yüzden bir kaç gün hata aradığım oldu. İsim bulamadığım da çok oldu. Sonra C'ye geçtim. Microcontroller'in tüm register isimlerini asm'lide ki gibi isimlendirdim, çünkü microchip yeni seri bir chip getirdiğinde eski register isimleri yine aynı kalıyor, bu da programa taşınabilirlik getiriyor. Sonra hiç bir hazır C modülünü kullanmadım(rs232,I2C gibi) burada amaç microcontroller nerede nekadar zaman harcıyor bilmeliydim. Zaten asm'ye en yakın derleyici C derleyisidir. Hitech C kullanıyorum ama CCS C 'de kullanabilirim aslında çok bir farkı yok(hazır modüller dışında), Hitech C içinde oluşturduğum haberleşme modüllerini CCS C içinde yapabilirim veya tersi , çünkü işlemci içinde ne yapılıyor hangi registere nezaman ne yüklenir biliyorum. Bunu asm sayesinde biliyorum, yine C içinde kritik zamanlamalar gerektiren yerde istersem asm uygulayabilirim fakat artık yapmıyorum çünkü programın taşınabilirliği kayboluyor.
(taşınabiliğin kaybolması = yeni bir işlemci için yeni bir program yazmaya gerek duymak)

Bu nedenle asm'ye en yakın derleyici C olduğu için C tavsiye ederim. Ayrıca endüstriyel birşeyler yapacaksanız(hep hobi çalışmaları yapacaksanız başka) , hiç bir hazır modül kullanmamanızı tavsiye ederim,
Ben işlemci ne yaptığını bilmeden program yazamam bu nedenle diğer diller bana çekici gelmiyor.
Knowledge and Experience are Power

Elektron74

@eemkutay
   Hocam Hi-tech C yi hangi kaynaklardan öğrendiniz? Bana önerebileceğiniz kaynak var mı? Eğer mümkünse Hi-tech C konusunda biraz bilgi verirmisiniz. CCS C ile benzerliği konusunda.
Yarın; yorgun kimselerin değil rahatlarına kıyabilenlerindir.

CLR

@Elektron74;
İlk öğrenirken ben daha önce asm kullandığım için C'nin asm karşılıklarını çıkarttım. Mesela  C'de ki "if" direktifi  asm'de "bit test file" komutlarına karşılık geliyor ("BTFSC veya BTFSS" ). Bu örnek gibi tüm C kelimelerini asm karşılıklarına çevirdim böylece öğrenmesi kolay oldu.
Sende benzer bir yol izleyebilirsin.

CCS ile Hi-tech benzerliğine gelince, eğer CCS C içindeki RS232,I2C, Delay vb diğer modülleri veya hazır komutları kullanmazsan aynı hitech C gibi kullanmış olursun(sadece C'nin word'lerini kullanmalısın). Yani kendi C fonksiyonunu kendin yazacaksın böylelikle fonksiyonda(altprogramda  diyebiliriz)ne kadar zaman harcadığını , nerede ne yaptığı bilirsin.
Zaten hazır altprogramları kullanırsan hafıza kaybın çok büyük olacaktır , LCD veya hızlı refresh yapman gereken yerlerde tarama hızın görülebilir ve müdahale edemezsin.

Tüm C derleyicileri hemen hemen aynıdır, Hitech C ile yazdığın programı diğer derleyicilerde küçük değişikler yaparak derleyebilirsin(aynı şey CCS C içinde geçerlidir fakat program hazır altprogramları kullanmadan yazılmalı) fakat en iyisi bir tanesini adam akıllı kullanmak. Tabii pic donanımını iyi tanımak gerektiriyor bu durum.Benim bildiğim kadarıyla Hitech ile ilgili kaynak(kitap) yok internette, en iyi yol çeşitli programları incelemek ve öğrendiğin yeni noktaları kaydetmek. Zamanla gelişim gösterirsin.

Kolay gelsin.
Knowledge and Experience are Power

Elektron74

@eemkutay;
 Hocam ben asm biliyorum. Fakat Asm ile kod yazmak çok uzun oluyor. En kötüsüde işlemcinin donanımına tam hakim olmayı gerektiriyor. Buda insanı fena halde sıkıyor. C dillerinden birini öğreneyim dedim. Hi-tech C öneriliyor ve çok övülüyor. Fakat bu derleyici hakkındada ne yazılmış örnek kod var ne de türkce döküman. CCS C ile bu derleyici arasında kararsız kaldım. Hitech C ye başlayıpda devamını getirerememekten korkuyorum. Malüm kaynak sıkıntısı. Siz ne önerirsiniz?
 
   Bir de şunu sormak istiyorum.  Hitech C de, Asm de olduğu gibi  işlemcinin özel fonksiyon registerlarının yapısını bilmek gerekiyormu?Örneğin STATUS'un 2. bitinin Zero flag  olduğunu bilmek zorunlumu?
   Cevaplar için teşekkürler.
Yarın; yorgun kimselerin değil rahatlarına kıyabilenlerindir.

CLR

@Elektron74;

Assembly'de nasıl  INCLUDE <PIC16Fxxx.INC> diyerek işlemcinin registerlerini program içine çağırıyorsan aynı şekilde C programi içinde de
#include "pic.h"   gibi header(yani başlık) ile registerleri program içine çağırıyorsun veya daha önce yazdığın bir programı ekleyebiliyorsun
mesela #include "I2C_HIGH.h"(ben 380khz'lik(400Khz) I2C için kullanıyorum) gibi, Headerları önce tanımlamak gerekiyor çünkü C derleyicileri program içinde kullanılan tüm fonksiyonların headerlarını veya kendi isimlendirdiğin  etiketleri ve  vermek istediğin tanımlamaları bilmeli ki ona göre derlesin ve hata varsa uyarsın. Asm'li de bunun yeri fark etmez yani include dosyalarını program başına veya sonuna koyabilirsin derleyici hata vermez, fakat include dosyan çok uzunsa mesela bir table ise sayfa sorunları ortaya çıkabilir.

Bu arada pic.h header'ı içinde istediğin değişikliği C kurallarına uygun olarak yapabilirsin. Mesela tüm registerleri asm'deki isimleri ile aynı olarak kullanabilirsin veya istersen kendi ezberlediğin şekilde isimlendirebilirsin  zaten hitech C'nin header dosyasında tanımlı (pic.h) neredeyse asm'deki register isimleriyle aynıdır.
Son sorunun yanıtına gelince evet tüm register ve bitlerini bilmen gerekiyor ama C , asm'ye nazaran program yazımı çok kolay, modüler, takip etmesi kolay,hata bulması kolay,yeni işlemciye uydurması kolay(taşınabilirlik) ve yukarıda anlattığım gibi kendi fonksiyonunu kendin oluşturursan asm'ye nazaran az bir program hafızası kaybı ile çok büyük işlemler gerçekleştirebilirsin.

Kim yeni birşey öğrendiyse mutlaka kopyalayarak öğrenmiştir ve kendini geliştirdikten sonra kendi stilini oluşturmuştur.Programcılıkta ilerledikçe daha önce örnek aldığın programlar sana basit gelecek veya hatalarını görebilir duruma geleceksin. Bu nedenle daha önce söyledim gibi ilk önce başka insanların yaptıklarını inceleyeceksin(öğreneceksin) sonra kendi programcılık stilini geliştireceksin.

Kod örneklerini http://www.microchipc.com/  adresinde bulabilirsin.

Kolay gelsin.
Knowledge and Experience are Power

Elektron74

@eemkutay
Verdiğin bilgiler için teşekkürler.
Yarın; yorgun kimselerin değil rahatlarına kıyabilenlerindir.