Assembly Hakkında bilgi ve Bir Soru
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Assembly Hakkında bilgi ve Bir Soru
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
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 Ç İ ]
İngilizcen iyi ise aşağıdaki linklerden yararlanabilirsin.
http://pub96.ezboard.com/bbsca2001
http://win32asm.cjb.net/
http://board.win32asmcommunity.net/
http://pub96.ezboard.com/bbsca2001
http://win32asm.cjb.net/
http://board.win32asmcommunity.net/
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
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
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
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]
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
Re: Assembly Hakkında bilgi ve Bir Soru
off-topicFXERKAN 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)
Selçuk Bilgisayar Mühendisliğinde mi okuyorsun? Orda bişey bilen doğru düzgün adam yok da

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

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 Ç İ ]
Delphi de assembler
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.
Herkese iyi çalışmalar.
İş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
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;
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
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