hex code

mihri

Üye
Katılım
28 Haz 2007
Mesajlar
7
Puanları
1
Yaş
39
arakadaslarrrr merhaba bize bir konuda yardımcı olabailr misiniz
hex code u verilen keil kodunun hex code üzerinde opcode ve operandı ve diğer parametrelerinin nasıl bulunduğu konusunda yardımcı oluun lütfennn
mesela

00 00 00 01 FF FD C0 87 86 00 hex codunun ilk iki biti ....
sonraki iki biti ....
gibi bilgilendiriseniz seviniriz.
Çok Acil...
Şimdiden Teşekkürler.
 
arkadaslr belki yanlıs anlatış olabiliriz bu konu ile ilgili bilgisi olan arkadaslar soru sorarlarsa daha ii olur
 
Selamlar.

İstediğiniz soruya cvp olarak işinizi görecek hazır programların disassembly adı altında internet üzerinde olduğunu söyleyebilirim. Daha detaylı olarak açıklamasını aşağıda bulabilirsiniz.

Keil kullandığınızı ve operand ve komutları sorduğunuza bakarak kullandığınız denetleyicinin 8051 tabanlı olduğunu düşünmekteyim. Eğer farklı bir denetleyici ie uğraşıyorsanız bile sorunuzun büyük bir kısmına yardımcı olacaktır.

Keilin yardım dosyalarında ve çevrimiçi yardım kısmında http://www.keil.com/support/docs/1584.htm Hex dosya formatının nasıl olduğunu güzel bir şekilde anlatmaktadır.

Aşağıda bir örnek hex dosyadaki satırın açılımı şu şekildedir.
: 10 2462 00 46 4C 55 49 44 20 50 52 4F 46 49 4C 45 00 46 4C 33
| || |||| || || CC->Doğrulama
| || |||| || DD->Kayıt
| || |||| TT->Kayıt tipi
| || AAAA->Adres
| LL->Kayıt uzunluğu
:->Yeni satır başı
  • ":" Bu işaret geçerli bir satır olduğunu ve belirtir. ";" işareti de görebilirsiniz ama bu sadece bilgi için konulmuş olup program hakkında bir bilgi içermez.
  • "LL"=10 Kayıt uzunluğu 'LL ile ifade edilmiş' bu değer bu satırdaki toplam byte sayısını hexadecimal olarak vermektedir. Yani bu satırda 16 byte kayıt olduğunu söylemektedir.
  • "AAAA"=2462 bu kısımda burdaki 16 bytelık bilginin hangi adresten itibaren yerleştirileceğini gösterir. Uzunluktaki gibi buda hexadecimal değer olarak tutulmaktadır.
  • "TT"=00 bu kısım Intel Hex dosyasının özelliği olan tipleri tutmaktadır. bu tipler 00 01 02 ve 04 olarak 4 farklı değer alabilirler. 00 değeri bu satırda direk kalıcı hafızaya yazılacak kayıtların bulunduğunu belirtir. Yanlış hatırlamıyorsam hem kod hem de kalıcı olarak sakladığımız genelde eeprom bilgileri bu kod ile belirtilir. 01 dosya sonu demektir bu koddan sonraki satırlar incelenmez. 02 genişletilmiş segment addres kaydı. daha çok mikrodenetleyiciler yerine mikro işlemci dosyalarında bulunur. özellikle 80286 ile birlikte intel hafıza erişiminde segmentleri kullanmaya başlamıştır. yani bir hücreyi farklı segmentler ve adresler ile adresleyebilme imkanı olmuştur. 04 genişletilmiş doğrusal adres kaydı. ne yazık ki bu kodla hiç karşılaşmadım ve tam olarak ne işe yaradığını bilmiyorum. mikrodenetleyicilerde ram ve rom kısmı çok fazla olmadığı için genel olarak 00 ve 01 den başka bir değerle karşılaşacağınızı pek ummuyorum.
  • "DD"= 46 ile başlayıp 4C ile biten dizi. bu kısım bizim işlemcimiz veya denetleyicimizdeki kodlarımız veya datalarımızdır. burdak byte sayısı ilk başta verilen uzunluk sayısı kadardır. Tam emin olmamakla birlikte genel olarak BIG ENDIAN formatında kayıt edilmektedir. Yani low byte ilk önce high byte sonra şeklindedir. bu şekilde kayıt kaydedilecek olan bilginin 1 bytedan fazla olması durumunda geçerlidir.
  • "CC"=33 bu kısım bu satırın doğrulama baytıdır. Doğrulama baytının hesabı şu şekilde yapılır. ilk baştaki 10 değerinden başlanarak tüm değerler byte byte toplanır sonuç 256 modülü alınarak tek bayta düşürülüp 2 nin tümleyeni alınır.

Bu şekildeki bir kayıttan gelecek olan değerlerin ne olduğunu bulabiliriz fakat karşılığı olan opcodeların ve operandların ne olduğunu bulmak daha zordur. Bu tarz işler için disassembly programları bulunmaktadır. Kullanmakta olduğum disassembly programlarından IDA Pro Advanced ' ı önerebilirim. Umarım anlattıklarım yardımcı olmuştur.

Kolay gelsin.
 
Teşekkürler h_akcay,
Gönderdiğin bilgiler gerçekten işimize yarayacak şeyler
İlgilendiğin için sağol
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…