Assembly Hakkında bilgi ve Bir Soru

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
FXERKAN
Üye
Mesajlar: 178
Kayıt: 26 Tem 2003 11:06
Konum: Sivas - Konya
İletişim:

Assembly Hakkında bilgi ve Bir Soru

Mesaj gönderen FXERKAN »

s.a.
arkadaşlar biz yeni assembly öğrenmeye başladık. daha doğrusu okuldakiler öğretmeye çalışmaya çalışıyorlar(zaten kendileride bilmiyor ama neyse)

ve buna rağmen bizden şöyle enteresan ve assembly ile yazılmasına hiç gerek olmayan bir ödev istediler
ekrandan

3+5-(5*4+(3*2)+9)+12/4 gibi string olarak girecekleri işlemin sonucunu bulan prog.

vallaha ne yalan söyliğim delphi,c,c# da isteseler yapardımda ki yaptımda assembler (assembly) olunca kasdı yani.

böyle birşeyi nasıl yaparım, yada nereden bulabilirim birde yani yaparsam sizce nasıl yaparım yani şunu şunu şöyle yap falan gibi tavsiyeleriniz bile şimdilik yeter. yani her türlü yardıma ihtiyacım var.

ama özellikle kod şeklinde olanlar olursa çok daha iyi olur.

teşekkürler. hayırlı ramazanlar
[ F X E R K A N © - E r k a n Ç İ F T Ç İ ]
Kullanıcı avatarı
safak
Şafak EBESEK
Mesajlar: 165
Kayıt: 05 Ağu 2003 04:39
Konum: Istanbul
İletişim:

Mesaj gönderen safak »

yaptınız mı ?
name
Kıdemli Üye
Mesajlar: 243
Kayıt: 09 Ağu 2003 02:11
Konum: İstanbul

Mesaj gönderen name »

İngilizcen iyi ise aşağıdaki linklerden yararlanabilirsin.

http://pub96.ezboard.com/bbsca2001
http://win32asm.cjb.net/
http://board.win32asmcommunity.net/
Kullanıcı avatarı
safak
Şafak EBESEK
Mesajlar: 165
Kayıt: 05 Ağu 2003 04:39
Konum: Istanbul
İletişim:

Mesaj gönderen safak »

Ödeviniz için ASM kayıtlarımı kontrol ettim.
En son ASM kodumu 1990 yılında yazmışım.
Ne günlerdi. En basit ekran kopyalama ve kaydırma işlerini bile ASM rutinleriyle yapardık. Sayenizde geçmişe hoş bir yolculuk yaptım.
Güncel Linkler için teşekkürler.

Kolay Gelsin,
Kullanıcı avatarı
MicroChip
Kıdemli Üye
Mesajlar: 1119
Kayıt: 02 Ağu 2003 01:02
Konum: İstanbul
İletişim:

Mesaj gönderen MicroChip »

valla değerleri yazmaçlara atıyacan
hem bu dediğin kod biraz uğraşı ister.
bende en son asm de (debugda) 1992 de yazdım hatırlamam için eski notları karıştırmam lazım HEMŞO
yardımcı olamadığım içim i'm sorry
Kafkas Kartalı Kabarday
Sitesi!= http://www.ahmetceylan.com
Resim
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

hatırladıgım kadarıyla okuldayken postfix ifadeler de buna benzer seyleri yapmıstık
veriyapıları desinin vazgecilmez orneklerinden
c de yazılmıs ornekleri incele asm ye uyarlaması okadar zor olmasaa gerek
ama dedigim gibi yıgını kullanarak rahatlıkla yapabilirsin
her operatorun bir oncelik numarası oluyodu.
mesela 5*(2+3) islemi soldan sırayla okunup yıgına atılıyor ac parantez varsa kapa paranteze kadar yıgına atılıyordu sonra kapa parantez gorunce yıgından cekiliyor iki eleman ve operator isleme tabi,i tıtılup tekrar yıgına atılıyor
kısaca buna benzer bir mantıgı vardı
asm de de buna benzer bhir mntık ile yapabilirsiniz
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

bahsettigim olayı yapan C++ kodaları

Kod: Tümünü seç

//Downloaded From -- Programmers Inn - http://akbani.20m.com

/*
Name: Asdaq Amin
Email: asdaqamin@hotmail.com
Language: C\C++
Category: Data Structures
Description: This prgram takes the Postfix Arithmatic expression and
give the result to a single constant value.For this purpose we used
stack implementation.
*/

//Asdaq Amin
// Bahria University ISl(Pak)
// Assignment of Data Structure

#include <conio.h>
#include <iostream.h>
#include <stdio.h>
#include <string.h>
#include <math.h>

const int MAX=20;

class Postfix{
      private:
	int Opndstk[MAX];   //Operator
	int top;
      public:
	 Postfix()
	 {     top=-1;}
	 void push(int);
	 int  pop();
	 void Evalute(char);
	 void display();
};
void Postfix::push(int Op)
{       if(top<MAX-1)
	{   Opndstk[++top]=Op;

	}
}
int Postfix::pop()
{
	if(top>-1)
	{   return Opndstk[top--];}
}
void Postfix::Evalute(char OPR)
{
	int Opnd1,Opnd2;
	Opnd2=pop();
	Opnd1=pop();
	if(OPR=='+')
	{
	      push(Opnd1+Opnd2);
	}
	else if(OPR=='-')
	{
	      push(Opnd1-Opnd2);
	}
	else if(OPR=='/')
	{
	      push(Opnd1/Opnd2);
	}
	else if(OPR=='*')
	{
	      push(Opnd1*Opnd2);
	}
	else if(OPR=='$')
	{
	      push(pow(Opnd1,Opnd2));
	}

}
void Postfix::display()
{	cout << "The value of Postfix expression is="<<Opndstk[top];
}
void main()
{
	Postfix P1;
	clrscr();
	int len,Opnd;     //calculate String length
	char STR[MAX];
	cout << "Enter the Expression in Postfix ";
	gets(STR);
	len=strlen(STR);
	for(int i=0;i<len;i++)
	{	if(int(STR[i])>47 && int(STR[i])<58)
		{        Opnd=int(STR[i])-48;
			 P1.push(Opnd);
		}
		else if((STR[i]=='+')||(STR[i]=='-')||(STR[i]=='/')||(STR[i]=='*')||(STR[i]=='$'))
		{
			  P1.Evalute(STR[i]);
		}
	}
	P1.display();
	getche();
}

ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

pardon infix expression olacakmıs

Infix Expression: ((A+(B*C))/(D-E))
Postfix Expression: ABC*+DE-/

[url]http://www.cs.kent.edu/~jmaletic/CS3300 ... 3.html/url]
linki incele[/list][/u]
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Re: Assembly Hakkında bilgi ve Bir Soru

Mesaj gönderen naile »

FXERKAN yazdı:s.a.
arkadaşlar biz yeni assembly öğrenmeye başladık. daha doğrusu okuldakiler öğretmeye çalışmaya çalışıyorlar(zaten kendileride bilmiyor ama neyse)
off-topic

Selçuk Bilgisayar Mühendisliğinde mi okuyorsun? Orda bişey bilen doğru düzgün adam yok da :lol:

off-topic
Kullanıcı avatarı
FXERKAN
Üye
Mesajlar: 178
Kayıt: 26 Tem 2003 11:06
Konum: Sivas - Konya
İletişim:

Mesaj gönderen FXERKAN »

evet naile hanım dediğinizi gibi birşey anlayan kimse yok daha doğrusu sadece biz varız. hocalara öğretmeye çalışıyoz ama öğrenmiyorlar bir türlü :-) ama naparsınız bir kere bulmuşlar biraz bişeyler onları sorup duruyorlar işte.
gerçi artık ödevin bir manası kalmadı. ama yinede yardımlarınız için teşekkürler.
[ F X E R K A N © - E r k a n Ç İ F T Ç İ ]
nnicc39
Üye
Mesajlar: 26
Kayıt: 20 Nis 2006 08:59
Konum: Çankırı

Delphi de assembler

Mesaj gönderen nnicc39 »

Bir delphi formundaki edit kutusunun içeriğini asm de AX registeri içerisine aktarmak istiyorum. Bilen varsa yardımlarınızı bekliyorum.

Herkese iyi çalışmalar.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Arkadaşım edit kutusunun içeriği eğer 2 karakter ise bunu yapabilirsin. Çünkü AX 16 bitlik bir registerdir ve sadece 2 byte'lık veri tutabilir.

Senin istediğin Edit1.Text'teki string ifadenin bellekteki pointer'ını mı almak?
nnicc39
Üye
Mesajlar: 26
Kayıt: 20 Nis 2006 08:59
Konum: Çankırı

Mesaj gönderen nnicc39 »

EAX 32 bit. Biliyorum. Uzun olursa diğer registerleri de kullanabilirim. Bu önemli değil. Edit kutusunda hex bir bilgi var. Amacım bu bilgiyi registere aktarıp üzerinde bazı işlemler yapmak. İşlem sonuçlarını da başka bir edit kutusuna aktarmak. ???
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

İşte o iş öyle yapılmıyor. Edit'teki string'i önce sayısal hale getirmen ve öyle register'e vermen gerekli. Registerler string ifade ile çalışmazlar.

Edit1.Text'de hex olarak "FFFD" yazsın.

Bunu önce integer tipine çevireceğiz, sonra eax registerine koyacağız

Kod: Tümünü seç

var
  I: Integer;
begin
  try
    I:= StrToInt('$' + edit1.Text);
  except
    raise Exception.Create('Bu hexadecimal bir ifade değil');
  end;
  asm
    mov eax, I
  end;
Kullanıcı avatarı
bluekid
Kıdemli Üye
Mesajlar: 541
Kayıt: 11 Haz 2004 10:45
İletişim:

Mesaj gönderen bluekid »

RAD artık asm içinde var bunlarıda kullanabilirsiniz
http://www.radasm.com/
http://www.easycoder.org/English/index.htm
gibi
asm de String işleri için
http://www.asmcommunity.net/x86book/ind ... ut_Strings
bu da x86 ASM book kitabının ana sayfası
http://www.asmcommunity.net/x86book/ind ... =Main_Page
Cevapla