Arama butonu
Bu konudaki kullanıcılar: 2 misafir, 1 mobil kullanıcı
20
Cevap
1336
Tıklama
0
Öne Çıkarma
Assembly ve C
M
13 yıl
Çavuş
Konu Sahibi

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)

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



R
13 yıl
Yüzbaşı

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 >
Bu mesaja 2 cevap geldi.
Q
13 yıl
Yüzbaşı

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.



M
13 yıl
Çavuş
Konu Sahibi

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.


Bu mesaja 1 cevap geldi.
A
13 yıl
Yüzbaşı

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?


Bu mesaja 1 cevap geldi.
G
13 yıl
Yüzbaşı

Kodu yolla. Belki basitleştiebiliriz


Bu mesaja 1 cevap geldi.
M
13 yıl
Çavuş
Konu Sahibi

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


Bu mesaja 1 cevap geldi.
G
13 yıl
Yüzbaşı

Ö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 >
Bu mesaja 1 cevap geldi.
C
13 yıl
Yüzbaşı

Her assembly aynı olmadığı için yardımcı olmak zor. Her işlemci, microcontroller ailesinin assembly komutları az da olsa farklıdır.


Bu mesaja 1 cevap geldi.
S
13 yıl
Çavuş

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?


Bu mesaja 1 cevap geldi.
M
13 yıl
Çavuş
Konu Sahibi

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


Bu mesaja 1 cevap geldi.
C
13 yıl
Yüzbaşı

Ö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.


Bu mesaja 1 cevap geldi.
M
13 yıl
Çavuş
Konu Sahibi

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 >
Bu mesaja 1 cevap geldi.
G
13 yıl
Yüzbaşı

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.


Bu mesaja 1 cevap geldi.
C
13 yıl
Yüzbaşı

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


Bu mesaja 2 cevap geldi.
M
13 yıl
Çavuş
Konu Sahibi

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.


Bu mesaja 1 cevap geldi.
M
13 yıl
Çavuş
Konu Sahibi

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 >
Bu mesaja 1 cevap geldi.
R
13 yıl
Yüzbaşı

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 >

K
13 yıl
Çavuş

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..


Bu mesaja 1 cevap geldi.
M
13 yıl
Çavuş
Konu Sahibi

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. :)