Picproje Elektronik Sitesi

SERBEST BÖLGE => Programlama ve Algoritma => Konuyu başlatan: Firzen - 14 Ekim 2018, 13:13:50

Başlık: Hala Bu ASM -> HEX işini anlamadım?
Gönderen: Firzen - 14 Ekim 2018, 13:13:50
Herkese Merhabalar;

Daha önceleri de sordum aslında ama hala aklımda aynı soru var. Ben örneğin herhangi bir dilde C/C++ PYTHON olsun kod yazıyorum. Bu programlar bir şekilde ASM kod üretip veriyorlar. Aynı işlem MCU kodları içinde geçerli. Onlar hatta bize HEX kodu veriyor.

Sorum şu örneğin benim elimde bir derleyici yok ve ben ASM'ye oradan da HEX koduna dönüştürmek istiyorum.  Gerçekten çok merak ettim bu işleri. Kendime ait derme çatma bir IDE yapamaz mıyım sadece 16F84A için falan?
Başlık: Ynt: Hala Bu ASM -> HEX işini anlamadım?
Gönderen: telbozan - 14 Ekim 2018, 14:33:18
 IDE (Integrated Development Environnement ) ler kendi başına bir işe yaramazlar.
IDE ler not defterinin çok daha gelişmişi kod yazma, renklendirme , ara bul, değiştir gibi işleri sağlar ve projeyi derleyiciye sürer.
Derleyici söylediğiniz gibi ASM ve hex kodları üretir. ASSEMBLER yazılımları ise not defterinde bile yazabileceğimiz asm kodları hex e dönüştürür. Sadece IDE tasarlayarak c/c++ kodunu ASM yada HEX e çeviremezsiniz. Ama basit bir ideyi c dinleyicisine bağlayabilirsiniz.
Başlık: Ynt: Hala Bu ASM -> HEX işini anlamadım?
Gönderen: RaMu - 14 Ekim 2018, 16:56:33
Benzer bir şey yapmıştım bir kaç konudada benzer şeylerden bahsetmiştik.
Asm hex konusu için:
Pic için programming specification denen dökümanlarda bu konu ile ilgili bilgi var,
örnek olarak bir çalışma linki
http://danamlund.dk/pic_microcontroller_blinking_led_without_cheating.html

30 40 sene önce öğrenci olup derleyicisiz hex dosyası yazanlar vardır aramızda,
kısaca opcode lar ile uğraşıyorsun
anlaması zor değil ama bayağı amelelik yapıyorsun resmen.

Hatta üstüne hazır programlayıcı kullanmadan da yazdığın koduda pice aktarabilirsin.
Başlık: Ynt: Hala Bu ASM -> HEX işini anlamadım?
Gönderen: mufitsozen - 14 Ekim 2018, 17:29:14
Alıntı yapılan: Firzen - 14 Ekim 2018, 13:13:50sadece 16F84A için falan?

@RaMu  40 sene once boyle programlar yazanlar deyince cevap yazmak zorunda hissettim kendimi.


Yapabilirsiniz. Cokta zor olmaz. Bilgisayar muhendisligi ogrencileri icin 1 donemlik bir proje ile yapilabilir.

PIC 16F84A datasheet'den 7 bolumu dikkatlice inceleyerek oradaki tanimlara uygun bir sekilde HEX degerler ASMden uretilebilir.

Python, C vb yuksek seviyeli bir dil kullanilarak birkac hafta icinde yazabilirsiniz.

Microchip HEX formati extended Intel HEX formatidir. Icinde code, data, configuration bytes ve user ID bilgileri icerir. Bunun ile ilgili bilgiyide internetden bulmaniz mumkun.
Başlık: Ynt: Hala Bu ASM -> HEX işini anlamadım?
Gönderen: fahri- - 14 Ekim 2018, 22:01:56
40 değilde 32 yil önce z80 kodlarını Asm bile yazmadan direk hex koda çevirip RAM a birer birer yükleyip çalıştırıyordum. MCU ile ilk tanıştığım yıllardı. Derlemek için değil derleyici bilgisayarım bile yoktu. Yani Asm kodlarını @müfitsozen hocamın dediği gibi kolaylıkla hex koda çeviren bir program yazabilirsiniz. Ben birkez denedim bunu. Çok zamanımı alıyor diye vazgeçmiştim yıllar önce.
Başlık: Ynt: Hala Bu ASM -> HEX işini anlamadım?
Gönderen: Firzen - 14 Ekim 2018, 22:16:36
Nasıl bir program yazılabilir her koduna çeviren kafama oturmadı. Bu opcode vs daha yeni yeni tanışıyorum bu kavramlarla. Lisans okurken sadece c dili ile PIC PIC32 STM32 programlama öğrendik ne ASM nede başka bişey yok.
Başlık: Ynt: Hala Bu ASM -> HEX işini anlamadım?
Gönderen: fahri- - 14 Ekim 2018, 22:28:29
Build your z80 computer
Bu kitabı okursanız sorularınıza cevap bulursunuz diye düşünüyorum.
Insruction kodların anlatıldığı bölümde
Nette PDF i var
Başlık: Ynt: Hala Bu ASM -> HEX işini anlamadım?
Gönderen: Firzen - 14 Ekim 2018, 22:40:36
Tamamdır hocam inceleyeceğim.
Başlık: Ynt: Hala Bu ASM -> HEX işini anlamadım?
Gönderen: erkan614 - 15 Ekim 2018, 11:54:04
çok basit aslında makinalar bizim latin harflerinden bi halt anlamazlar :)
o sebepten move komutunu sayısal binary bir karakter topluluğu ile ifade edersin ve onu flasha yüklersin
biz ise bu şekilde komutları ezberlemeyi sevmediğimizden programlama dillerini oluşturduk derlegicilerde bizim cümlelerimizi makina diline ceviriyor
mesela qr kod sen okuyamıyosun ama orda erkan614 yazıyor
Başlık: Ynt: Hala Bu ASM -> HEX işini anlamadım?
Gönderen: OptimusPrime - 15 Ekim 2018, 16:25:41
Bak bakalim, belki bu yardimci olur anlamana  ;)

http://www.elproducts.com/understanding-hex-files.html

Başlık: Ynt: Hala Bu ASM -> HEX işini anlamadım?
Gönderen: foseydon - 15 Ekim 2018, 17:19:17
hocam biz bu konuda mesajlaşmıştık senle. kabaca üstünden geçersek, makineler sadece binary anlar. assembly ve C(ve diğer programlama dilleri) insanlar içindir, makineler için değil. insanlar daha kolay yazsın diye.

IDE dediğin şey birleşik geliştirme ortamıdır, yani metin editörü, derleyici, debugger vs. hepsini içerir ve senin erişimini kolaylaştırır. IDE yapmak mantıklı değil, ne senin amacına hizmet eder ne faydası olur.

bu işi kavramak istiyorsan, C standardını ve GNU C Compiler kaynak kodunu incele bence.
Başlık: Ynt: Hala Bu ASM -> HEX işini anlamadım?
Gönderen: Firzen - 15 Ekim 2018, 18:08:57
Hatırlıyorum hocam da denedim senden sonra tabiri caizse elektronikçi deyimiyle 1in yol alamadım.
Başlık: Ynt: Hala Bu ASM -> HEX işini anlamadım?
Gönderen: mufitsozen - 15 Ekim 2018, 19:12:11
Alıntı yapılan: Firzen - 15 Ekim 2018, 18:08:57Hatırlıyorum hocam da denedim senden sonra tabiri caizse elektronikçi deyimiyle 1in yol alamadım.

@Firzen neden boyle bir calisma yapmak istiyorsunuz soyleyebilirmisiniz?

PIC 16F84A icin boyle bir program yazmak icin ben size yardimci olabilirim. Bu 3-5 soru cevap yada bir kitap okuyarak tek basiniza yapmaniz kolay olmaz.

Birde Sembolik Assembler dosyasindan hafizaya yuklenen HEX degerlere gelene kadar hangi araclarin kullanildigini ve bunlarin neler yaptigini en azindan kavram olarak bilmeniz lazim. Bilahare PIC 16F84A datasheetinin ustunden 5-6 yada daha fazla gecerek ve PIC 16F84A mimarisinin butun ozelliklerine vakif olarak bu araclari en basit sekilleri ile gelistirmeniz lazim.

Z80(yada 8080) ozelinde baslamaniz gereksiz yere bu is akisini zorlastirir cunku 8080 makina kodlari hem sayica fazladir hem de  degisik boylardadir, operandlara gore boylari degisir. Halbuki bildigim kadari ile PIC 16F84A icin makina kodlari sabittir ve instruction sayisida oldukca azdir. Bu yuzden yapacaginiz is daha kolaydir.

Ilk olarak yapmaniz gereken Assembler ile yazdiginiz bir programin LST dosyasini inceleyerek ayni HEX kodlari elle sizin yapmaya calismaniz. Bu yapmaniz gerekleri tam olarak anlamanizi saglar. Asagidaki linkte boyle bir egitimin bir ornegi var. 3.5 bolumdeki programi kendiniz elle yapmaya calisiniz, ondan sonra yapilmasi gerekenler daha kolay anlasilir hale gelecektir.

http://www.islavici.ro/cursuriold/conducere%20sist%20cu%20calculatorul/PICbook/3_chapter.htm



                   
Başlık: Ynt: Hala Bu ASM -> HEX işini anlamadım?
Gönderen: Firzen - 15 Ekim 2018, 21:10:31
işin aslı her haltı yüzeysel bildiğimizden. Nasip olursa 5 sene sonra resmi olarak akademisyen olacağım. öğrencilere gömülü sistem öğretirken hadi yazdık bakın led yandı demek istemiyorum.
Başlık: Ynt: Hala Bu ASM -> HEX işini anlamadım?
Gönderen: memo333 - 15 Ekim 2018, 22:31:14
Alıntı yapılan: RaMu - 14 Ekim 2018, 16:56:3330 40 sene önce öğrenci olup derleyicisiz hex dosyası yazanlar vardır aramızda,
kısaca opcode lar ile uğraşıyorsun
anlaması zor değil ama bayağı amelelik yapıyorsun resmen.

Hatta üstüne hazır programlayıcı kullanmadan da yazdığın koduda pice aktarabilirsin.

Lise sonda 2005/2006 yılında 6802lere elle keypad aracılığıyla opcodeları yazardık.. Branch hesapları vs.. Acayip eğlenirdim.

40 ne ya o kadar yaşlı değilim  8-)
Başlık: Ynt: Hala Bu ASM -> HEX işini anlamadım?
Gönderen: RaMu - 15 Ekim 2018, 23:59:17
Bu işi tam anlamanın yolu aslında mimariyide anlamayı gerektiriyor.
İşlemci ve mcu nasıl çalışır anlaşılmalı.

Bence öğrenmenin en kolay yolu ilk bilgisayarlara bakmak,
delikli kartlarla çalışan bilgisayarları anlamak kolay, bunlara bakılır.

Günümüz için ise transistör nasıl çalışır, lojik kapılar nasıl çalışır,
flip flop lar nasıl çalışır anlaşılırsa temel öğrenilmiş oluyor.

Richard Feynman ın güzel bir dersi var bu konuda:
https://youtu.be/EKWGGDXe5MA?t=9
Başlık: Ynt: Hala Bu ASM -> HEX işini anlamadım?
Gönderen: ziyaretci - 13 Kasım 2018, 19:06:31
Ben de merak ediyordum aynı şekilde. Hatta PIC ile yeni yeni haşırneşir olduğum 6-7 yıl önce bir iki komut yazıp, derleyip hex kodunu açıp komutları değiştirerek farklılıkları görmeye çalışmışlığım var.

Flip-flopları öğrendikten sonra işin temel mantığı gözümde simüle edildi. Sonra tamam dedim, "Ben artık kendi mimarimi, bilgisayarımı bile yaparım bundan sonra.". Bu defterde böyle kapandı.
Başlık: Ynt: Hala Bu ASM -> HEX işini anlamadım?
Gönderen: MC_Skywalker - 13 Kasım 2018, 21:39:35
işlemci mimarisini anlamak için şu https://www.youtube.com/user/eaterbc kanal takip edilebilir.
Başlık: Ynt: Hala Bu ASM -> HEX işini anlamadım?
Gönderen: muhendisbey - 13 Kasım 2018, 22:43:23
Şöyle düşünelim.
Makine sadece 1 ve 0'ı anlar.
Mov dediğimiz bir kod
Decfz ayrı bir kod
Toplama, çıkarma ayrı kod
Verdiğimiz değişkenler binary olmalı onlar ayrı kod
Yazacağımız adresin başlangıcını bilmemiz lazım, o da binary ayrı bir kod...
Her şey 1 ve 0. Bu kadar 1 ve 0'ı kimse aklında tutamaz. Üstelik bunlar standartta değildir. Yani her işlemci için her mcu için mov'un kod karşılığı da değişir.
Hal böyle olunca demişler ki biz register'ları bilelim ona göre bunu ona yaz, buna böyle bir işlem yap. Assembly dili çıkmış.
Sonra demişler ki yahu biz şu register, bu ram bu bilmem ne çok uğraşıyoruz. ARM serisi işlemcilerde hele hexi geçelim nasıl bir assembly yapısı vardır düşünmek istemiyorum. Bir dil çıkaralım register tabanına girmeden döngüyse döngü, şartsa şart yazalım gerisi ırgalamasın, C dili ortaya çıkmış.

Derleyici yazalım dersek basit bir derleyici yazılır. Hatta son yıllarda olduğu gibi eclipse tabanlı da yapılır. Lakin coocox gibi bir derleyicinin ortadan kaybolmuş olması bu işlerin bu kadar basit olmadığını göstermez mi?