Şimdi Ara

Assembly ve C

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
22
Cevap
1
Favori
1.282
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 12
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • Selamlar. Bir konuda danışmak istiyorum. Bir soruyla alakalı Assembly'de kod yazmam lazım. Dili yeni öğrenmekteyiz. Sorunun çözümünü C'de yaptım. Fakat Assembly için nasıl yapacağımı anlayamadım. Çünkü henüz görmediğimiz şeyler kullanmam gerekti ve onun syntax'ini nasıl uyarlarım bilmiyorum. Assembly çok değişik bir dil gibi. Bana özelden yardımcı olabilecek var mı? Yazmış olduğum C kodunu da göstereceğim.

    8086, masm'de için yapıyoruz.(visual studio 2010 aracılığıyla, irvine32 kütüphanesini kullanarak)



  • 3 xbdgcg ,.bn b vn v,.. ,



    < Bu mesaj bu kişi tarafından değiştirildi rob dö şambır -- 30 Nisan 2013; 15:01:35 >
  • Visual Studio 2010'da adım adım çalıştırma özelliği var, F10 tuşu ileydi yanlış hatırlamıyorsam.

    Veya istediğin satıra F9 tuşu ile kesme noktası(breakpoint) koyup normal çalıştırırsan program o satıra geldiğinde duracak ve senin devam ettirmeni bekleyecek.

    Bu noktada düzeneleyicine(editor) sağ tıklayıp "Go to Disassembly" dersen, yazdığın kodun makina dilindeki karşılığını görebilirsin.
  • quote:

    Orijinalden alıntı: rob dö şambır

    bir okula gidiyorsun, bir ders var, dersin bir hocası var, bu hoca bir ödev veriyor ve öğrenci çaresiz kalıyor, bunları daha görmedik diyor, sağdan soldan yardım dileniyor...
    bu senaryoyu mantığım almıyor. ve bu forumlarda çok olan bir şey.
    diyelim ingilizcen yok, Google'da Bing'de search yapamıyorsun, pekiyi, bu dersin bir kitabı da mı yok? ders notları? ben de öğrenciydim, dersi kaçırırsam kitabı açıp çalışırdım, iyi not tutan birinden notları alırdım.
    ingilizce yok, bir kitap yok, belli ki hocada da iş yok, ee? o diplomayı alıp da ne kazanmayı umuyorsunuz?

    irvine32 dediğin lib'i yazan adamın bir kitabı var, 5-10 kişi aranızda para toplayıp Amazon'dan sipariş verin, oku işte ilk chapter'larda anlatıyor neyin ne olduğunu... ya da hocana ver o kısımları çalışıp size derste anlatsın.


    İthamın çok ağır olmuş. Ben sana aynı şekilde cevap vermeyeceğim ama. Beni anlamamışsın çünkü.

    İngilizcem var. Arama da yapabiliyorum. Orasında sorunum yok. Dersin kitabına da sahibim. Hocası da gayet iyi ders anlatıyor. Notumu da kendim tutuyorum, senin gibi iyi not tutan birilerinden not "dilenmek" yerine.

    Ben kimseye benim ödevimi yapın demedim. Bir soru soruldu, soruyu C koduyla rahatlıkla çözdüm. Tıkır tıkır da çalışıyor. Fakat, C'de kullandığım birtakım yapıları(fonksiyonlar,rekürsif fonksiyonlar vb) Assembly'de kullanabilmem lazım. Bunlar da chapter 8'de anlatılmış. Biz ise okulda Chapter-5'e başlayacağız henüz. Dolayısıyla kitabı karıştırıp buralardaki şeyleri kullanıyor olmam sorun yaratabilir diye düşünüp, yazdığım C kodunun algoritmasını basitleştirebilecek birisi olur mu, benim aklıma gelmiyor diye başlığı açtım. Ama resmen küfür yedim. C kodunun algoritmasını basitleştirebilsem, Assembly'de mümkün olduğunca ileriki konulardan kullanmam gerekmeyecekti. Başlığı açmamdaki amaç bu. Yoksa ben soruyu vereyim, alın çözün diye sormadım kimseye. Anlamak istediğinizi anlamaktan vazgeçin.




  • quote:

    Orijinalden alıntı: MLoveR


    quote:

    Orijinalden alıntı: rob dö şambır

    bir okula gidiyorsun, bir ders var, dersin bir hocası var, bu hoca bir ödev veriyor ve öğrenci çaresiz kalıyor, bunları daha görmedik diyor, sağdan soldan yardım dileniyor...
    bu senaryoyu mantığım almıyor. ve bu forumlarda çok olan bir şey.
    diyelim ingilizcen yok, Google'da Bing'de search yapamıyorsun, pekiyi, bu dersin bir kitabı da mı yok? ders notları? ben de öğrenciydim, dersi kaçırırsam kitabı açıp çalışırdım, iyi not tutan birinden notları alırdım.
    ingilizce yok, bir kitap yok, belli ki hocada da iş yok, ee? o diplomayı alıp da ne kazanmayı umuyorsunuz?

    irvine32 dediğin lib'i yazan adamın bir kitabı var, 5-10 kişi aranızda para toplayıp Amazon'dan sipariş verin, oku işte ilk chapter'larda anlatıyor neyin ne olduğunu... ya da hocana ver o kısımları çalışıp size derste anlatsın.


    İthamın çok ağır olmuş. Ben sana aynı şekilde cevap vermeyeceğim ama. Beni anlamamışsın çünkü.

    İngilizcem var. Arama da yapabiliyorum. Orasında sorunum yok. Dersin kitabına da sahibim. Hocası da gayet iyi ders anlatıyor. Notumu da kendim tutuyorum, senin gibi iyi not tutan birilerinden not "dilenmek" yerine.

    Ben kimseye benim ödevimi yapın demedim. Bir soru soruldu, soruyu C koduyla rahatlıkla çözdüm. Tıkır tıkır da çalışıyor. Fakat, C'de kullandığım birtakım yapıları(fonksiyonlar,rekürsif fonksiyonlar vb) Assembly'de kullanabilmem lazım. Bunlar da chapter 8'de anlatılmış. Biz ise okulda Chapter-5'e başlayacağız henüz. Dolayısıyla kitabı karıştırıp buralardaki şeyleri kullanıyor olmam sorun yaratabilir diye düşünüp, yazdığım C kodunun algoritmasını basitleştirebilecek birisi olur mu, benim aklıma gelmiyor diye başlığı açtım. Ama resmen küfür yedim. C kodunun algoritmasını basitleştirebilsem, Assembly'de mümkün olduğunca ileriki konulardan kullanmam gerekmeyecekti. Başlığı açmamdaki amaç bu. Yoksa ben soruyu vereyim, alın çözün diye sormadım kimseye. Anlamak istediğinizi anlamaktan vazgeçin.





    :) boşver o da ego peşinde herkes bazen ego durumlarına düşer. gergindir vs..
    yazılımcı degılım ama assembly hala ögretiliyor mu yau?




  • Kodu yolla. Belki basitleştiebiliriz
  • quote:

    Orijinalden alıntı: garui

    Kodu yolla. Belki basitleştiebiliriz


    Gönderiyorum. Teşekkür ederim. :)

    quote:

    Orijinalden alıntı: alprens
    :) boşver o da ego peşinde herkes bazen ego durumlarına düşer. gergindir vs..
    yazılımcı degılım ama assembly hala ögretiliyor mu yau?


    Valla mikroişlemci, donanım-yazılım bağlantısının mantığını kavratmak adına Assembly olayına da girişiyorlar. :) Biraz uyuz bir dilmiş bu. :D
  • Özel mesajda code tagı bir garip davrandı vazgeçtim yollamaktan :)

    Bu arada bazen "Basit düşün!"

    Yazdığın kod güzel tabi. Generic bi hesaplama metodu. Ama bazı ufak logic hatalarda var. Mesela ufak bi array dışına taşma var(aynısını demin ben de yaptım).http://www.cplusplus.com/doc/tutorial/arrays/ Neden belirtiyorum, ileride toplu kod yazdığınızda büyük projelerde bunlar gelen giden mesajlaarı hesaplamarı vs patlatabilir. Bu hataların bulunması zor olabilir ilerde. array ile oynarken (hele char arrary) ise dikkatli olmak lazım.

    Ekleme : Tekrar baktım hata yokmuş arrayde. ben F(0) ile başlamıştım (Wiki) sen F(1) ile başlayıp ona göre yazmışssın.



    < Bu mesaj bu kişi tarafından değiştirildi garui -- 20 Ekim 2012; 16:21:32 >




  • Her assembly aynı olmadığı için yardımcı olmak zor. Her işlemci, microcontroller ailesinin assembly komutları az da olsa farklıdır.
  • visual studio altında assembly çalıştırabiliyor muyuz?

    nasil oluyor bende merak ettim şimdi :)

    benim bildiğim cpp de _asm{} kodları arasına yazılıp yapılıyodu dediğin bu mu?
  • http://kipirvine.com/asm/examples/index.htm

    Buraya gir. Visual Studio'nun ordaki sürümlerinden hangisini kullanıyorsan indir örnek dosyayı. Kurarken C/Irvine gibi bir şeyin içine kuruyor değiştirme onu. Sonra oranın içinde project sample klasörünü masaüstünde veya istediğin yere kopyala. Aç projeyi gitsin kopyaladığının içindekini. :D
  • Önündeki konulara ait yapılar kullanıyorsan çözümün beklenilen çözüm değil demektir. Öğrendiklerinle bir çözüm geliştirmelisin, ayrıca madem ingilizcen var araştırmak yerine buraya sormak neden? Yukarıda yaptırmak değil niyetim diyorsun ama hareketlerin bunu desteklemiyo. Dediğim gibi, öğrendiklerinle bir algoritma geliştirmen bekleniyor senden belli ki.
  • quote:

    Orijinalden alıntı: caut

    Önündeki konulara ait yapılar kullanıyorsan çözümün beklenilen çözüm değil demektir. Öğrendiklerinle bir çözüm geliştirmelisin, ayrıca madem ingilizcen var araştırmak yerine buraya sormak neden? Yukarıda yaptırmak değil niyetim diyorsun ama hareketlerin bunu desteklemiyo. Dediğim gibi, öğrendiklerinle bir algoritma geliştirmen bekleniyor senden belli ki.


    Mevcut öğrendiklerimizle çözüm isteniyor doğrudur. Başka bir dili bitirmiş olup oradaki konu sayesinde ödevi yapmak amaca hizmet etmiyor ama başka türlü de çözüm düşünemeyebiliyoruz. Burası da bir forum ve paylaşım alanı. Hiçbir şey sormayacaksak forumu kapatalım isterseniz? Veya madem her şeyin İngilizcesi var, siz neden gelip başlığa cevap veriyorsunuz? Hareketlerimin bunu destekleyip desteklemediğini sevgili @garui, gayet güzel gördü. Ona yazdığım kodu gönderdim. Onun üzerinden bana yön verdi. O şekilde ilerledim. Yukarıda da benim yazdığım kodun içeriğiyle ilgili bilgilendirme yapmış. Yukarda garui'ye kodu gönderdiğime dair yazıları okumadığınız belli. Dolayısıyla şu şekil ithamlardan vazgeçin. Neyi ispatlamaya çalışıyorsunuz anlamıyorum.



    < Bu mesaj bu kişi tarafından değiştirildi MLoveR -- 23 Ekim 2012; 23:39:22 >




  • Assembly olarak pek bir yardımım dokunmadı(unuttum gitti zaten assembly. Anca debug ederim ). Generic olarak pozitif Fibonacci için gayet hoş bir fonksiyonu vardı. Wiki sayfasındakinden daha iyi bir initial değerleri (f(0) f(1)) vermek için çözüm bile geliştirmiş. Ben onun yazdığını oyuncak yaptım o kadar. Daha fonksiyon konusuna gelmemiş birinin anlayacağı C şekline getirdik o kadar.
  • Konuyu dağıtıp da haklı çıkmaya çalışmanın da pek anlamı yok hani. Neyse bir şey demedim ben siz devam edin
  • quote:

    Orijinalden alıntı: caut

    Konuyu dağıtıp da haklı çıkmaya çalışmanın da pek anlamı yok hani. Neyse bir şey demedim ben siz devam edin


    Cevap vermeme gerek yok buna. Bir şeyler için uğraştığımı garui gördü. Size açıklama yapacak değilim. Mesajınızın üstünde yer alan mesajı da mı okumadınız?

    Ben bu soru için elimdeki tüm bilgileri kullanarak olması gerekenden daha komplike bir C kodu yazarak, garui'ye gönderdim. Tekrar yazmış yazdığım kodla alakalı içerik bilgilendirmesini mesajında. O da yazdığım C kodunu basitleştirmeye çalışarak syntax'i küçülttü ve Assembly'e dökmemde yardımcı oldu. Dolayısıyla haklı,haksız davası değil bu. Durum zaten açık.

    http://forum.donanimhaber.com/m_67164532/tm.htm

    Beni şu başlıktaki adamla karıştırma istersen.




  • int i;
    C = 1;
    for(i=0;i< e;i++)
    C=C*M%n;
    C = C%n;
    printf("\n\Sifreli Bolum : %d",C);

    Arkadaşlar, C'deki böyle bir kod parçasını(main içerisinde gibi düşünün) x86(8086-intel) ailesi için assembly koduna nasıl yazabilirim? Bir proje üzerinde çalışıyorum. Son kısımlara gelmek üzereyim ama, bu algoritmayı Assembly'de yazmayı beceremedim. İrvine32.inc kütüphanesi kullanıyoruz.

    Yazdığım kodlar hep hata veriyor. Daha doğrusu şifreli bölüm mesajı yazısını çıkartıyorum ama hata çıkıyor.

    C,n,M .data kısmında DWORD ? olarak tanımlı. 32-bitlik registerlarla uğraşmaktayım.



    < Bu mesaj bu kişi tarafından değiştirildi MLoveR -- 17 Aralık 2012; 22:47:36 >
  • quote:

    Orijinalden alıntı: caut

    Konuyu dağıtıp da haklı çıkmaya çalışmanın da pek anlamı yok hani. Neyse bir şey demedim ben siz devam edin
    b vmjk rd s6eu 6u4w h



    < Bu mesaj bu kişi tarafından değiştirildi rob dö şambır -- 30 Nisan 2013; 18:19:35 >
  • quote:

    Orijinalden alıntı: MLoveR

    int i;
    C = 1;
    for(i=0;i< e;i++)
    C=C*M%n;
    C = C%n;
    printf("\n\Sifreli Bolum : %d",C);

    Arkadaşlar, C'deki böyle bir kod parçasını(main içerisinde gibi düşünün) x86(8086-intel) ailesi için assembly koduna nasıl yazabilirim? Bir proje üzerinde çalışıyorum. Son kısımlara gelmek üzereyim ama, bu algoritmayı Assembly'de yazmayı beceremedim. İrvine32.inc kütüphanesi kullanıyoruz.

    Yazdığım kodlar hep hata veriyor. Daha doğrusu şifreli bölüm mesajı yazısını çıkartıyorum ama hata çıkıyor.

    C,n,M .data kısmında DWORD ? olarak tanımlı. 32-bitlik registerlarla uğraşmaktayım.


    öncelikle döngü için CX yazmacı kullanılıyor.
    mov cx, 10
    L1: mov al, ch
    //islemlerini burda yapıyorsun
    //diger degiskenler icin de ya yazmaç ya da data segmentte tanımladıgın bellek alanlarını kullanabilirsin ama dikkat etmen gereken 2 bellek alanını her komut yapmaz bunun için de önce yazmaçlara alman lazım
    loop L1 ; cx=10 old. icin 10 kere L1 e atlama yapar

    irvine32.inc te farklı durum var mı bilmiyorum da x86 için konuşuyorum bunu mecbur sağlamak zorunda..




  • quote:

    Orijinalden alıntı: rob dö şambır

    yah herif artist işte.. ilk yazdığı şey ortada, sonra nasıl kıvırdığı da ortada, topaç bunlar, anca politikacı olur mezun olunca.
    ben de cevap verdiğime pişman oldum, ama yazdık bir kere.


    Ya hangi sıfatla insanları bilip bilmeden yargılayabiliyorsun? Benim hiçbir şeyi kıvırdığım falan yok. Doğru düzgün konuş karşındakiyle. Topaçmış bilmemne, sen sütten çıkma ak kaşıksın zaten.

    quote:

    Orijinalden alıntı: kod yazarı
    öncelikle döngü için CX yazmacı kullanılıyor.
    mov cx, 10
    L1: mov al, ch
    //islemlerini burda yapıyorsun
    //diger degiskenler icin de ya yazmaç ya da data segmentte tanımladıgın bellek alanlarını kullanabilirsin ama dikkat etmen gereken 2 bellek alanını her komut yapmaz bunun için de önce yazmaçlara alman lazım
    loop L1 ; cx=10 old. icin 10 kere L1 e atlama yapar

    irvine32.inc te farklı durum var mı bilmiyorum da x86 için konuşuyorum bunu mecbur sağlamak zorunda..


    Çok teşekkür ederim. Dün mesajı yazdıktan sonra, biraz daha üzerinde düşündüm. Biraz daha kapsamlı bir şey yazdım. Paylaşırım yakın zamana. Bir de CX 16-bitlik bir register. Ben ECX gibi 32-bitlik registerlarla uğraşıyorum. :)




  • 
Sayfa: 12
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.