Cevapla
 
Konu Araçları
Eski 01-07-05, 23:19 #21
lady lady çevrimdışı
Varsayılan Assembly'e Genel bi bakış


Assembly nin kod yapısına geçmeden önce bilinmesi gerekli diye düşündüğüm bilgilerimi yazmak istedim.
Bütün programlama dilleri kullanılarak yazılmış programlar makine diline dönüştürülerek çalıştırılır.Assembly dilinden makine diline dönüştürme işlemi yapan programlara Assembler denir.
Diğer programla dillerinde yazılan programlar iki şekilde çalışabilirler.ya tamamen makine diline dönüştürülür çalıştırılır yada programın her satırı aracı başka bir program tarafından yorumlanarak adım adım çalıştırılır.Program kodunu makine diline dönüştüren programlara compiler (derleyici) denir.Pascal C gibi diller birer compiler dır.programın her satırını yorumlayan programlara ise İnterpreter (yorumlayıcı) denir.basic ve java gibi diller yorumlayıcıdır.
Assembly dilinin komut yapısı
Açıklama Alanları : Açıklama satırlarının başına ; konularak yapılır.
örn: MOV EDX,2025H ; 2025H sayısını EDX kaydedicisine yükle
ADD EAX,EDX ;EDX değerini EAX kaydedicisine ekle
Etiket Alanları : Kullanılması zorunlu olmamakla birlikte eğer kullanılıyorsa komut satırının ilk bilgisini oluşturur.Etiketin ilk karakteri sayısal olmamak farkıyla tüm karakterler kullanılabilir.
örn: ORTAL PROC

Komut alanı : Komutun anlamını veren kelimelerin kısaltılarak yazılmış şeklinde olan anlamlı kelimelerdir.Bu şekilde kısaltma işlemine mnemonik denir.
Örn: MOVE - MOV olarak kıslaltılmıştır , JUMP NOT EQUİEL - JNE gibi..

Operant alanı : işlemciye gönderilecek işlenecek verileri içerir.
örn : ADD AX,[BX]
MOV CX,00
JNE snforta

TALİMATLAR
Komut alanında ikitür ifade yer alır.bunlar komutlar ve talimatlardır.komutlar doğrudan işlemciyi hedef alırken talimatlar Assembler i hedef alır.Talimatlar komutların belli kurallar düzeni içerisinde işlemciye iletilmek üzere assemblere verilmesidir.
Listeleme talimatları : derlenmiş bir programdaki safya formatı program başlığı alt başlıklar gibi tanımlamalar yazım formatını belirler.PAGE ve TİTLE sayfa yapısını ve program başlığını belirler.
PAGE 60,120 komutu sayfayı 60 satır ve 120 sütun olarak ayarlar.
TİTLE assembly de yazılan programa isim vermek için kullanılır.

Data Talimatları:
Segment talimatları: bir segmente başlamada kullanılır.segmentlerin isimleri vardır.bir isimle başlatılan segment aynı isimle ENDS komutu kullanılarak bitirilir.

Bir progrmda programın tipine göre ( com veya exe) bir veya birden fazla segment tanımlanabilir.
Codesegment komutların yerleştirildiği,datasegment verilerin depolandığı,Stacksegment ise yığın işlemlerinin gerçekleştirildiği alanları ifade eder.

Proc Talimatı
Assembly dilinde özel bir amaç için üretilmiş olan kod parçalarına Procedure denir.Procedure tanımlaması:

PROC ADI PROC FOR/NEAR
<KOMUTLAR>
PROC ADI ENDP
özel bir amaç için tanımlanmış ana procedure parogramın giriş , icra ve sonuç aşamalarını içinde barındırır.Ana procedure içinde genellikle önceden tanımlanmış procedurelerin çağrıları yapılır.bir procedure CALL PROCADI şeklinde çağırılır.FOR / NEAR parametreleri çağrılacak olan procedurenün aynı segmenttemi yoksa başka segmenttemi olduğunu belirtir.aynı segmentteyse Near değilse For
Ana procedure tamamlandığında ENDP yerine END kullanılır.

örnek olarakta assembly de toplama işlemini yapayım.
PASCAL İÇİN
VAR
SAYI1,SAYI2,TOPLAM :BYTE;
BEGİN
SAYI1:=25;
SAYI2:=45;
ASM
MOV AL,SAYI1
ADD AL,SAYI2
MOV TOPLAM ,AL
END;
WRİTE(TOPLAM);
READLN;
END.

Alıntı değildir! tamamen oturup kendim yazdım.umarım ön giriş için işinize yarar.
bunlar temel bilgilerdir.
sağlıcakla kalın
__________________
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 02-07-05, 10:38 #22
mehtabim mehtabim çevrimdışı
Varsayılan Cvp: Assembly Öğreniyorum..!


Teşekkürler lady.Gerçektende emek verdiğin belli çünkü böyle anlatan kitap bulunmaz Ellerine sağlık
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 14-07-05, 13:51 #23
daredevil15 daredevil15 çevrimdışı
Varsayılan Cvp: Assembly Öğreniyorum..!


ya biz bunları nereye yazıyoruz eğer bi program varsa bana nereden temin edeceğimi söylermisiniz
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 14-07-05, 14:07 #24
ufaklik99 ufaklik99 çevrimdışı
Varsayılan Cvp: Assembly Öğreniyorum..!

arkadaşlar assembly donanım spesifik bir dildir. Başlangıç için hangi işlemciyi seçeceksiniz?
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 14-07-05, 21:41 #25
lady lady çevrimdışı
Varsayılan Cvp: Assembly Öğreniyorum..!

arkadaşlar bu kodları pascalda,c++ da çalıştırabilirsiniz.Örneğin ben pascal da yazın diye pascal için kullanım şeklini yazdım.
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 13-08-05, 01:24 #26
 çevrimdışı
Varsayılan Cvp: Assembly Öğreniyorum..!

peki c++ da yazsak napacaz?
Not:Konuyu yeni gördüm çok iyi bişey olmuş, Allah kolaylık varsin
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 16-08-05, 14:56 #27
gokhangk gokhangk çevrimdışı
Varsayılan Cvp: Assembly Öğreniyorum..!

devamını bekliorus dostum... ellerine sağlık
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 17-08-05, 03:27 #28
 çevrimdışı
Varsayılan Cvp: Assembly Öğreniyorum..!

walla lady çok güzel olmuş çalışamalarında başarılar dilerim, bi de şunu böyle başka bişey içine değil de sadece assembly derleyen bişey içine yazmak istiyorum.Bir derleyici tavsiye edip linkini verir misin?
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 21-08-05, 16:58 #29
JustUnique JustUnique çevrimdışı
Varsayılan Cvp: Assembly Öğreniyorum..!

Alıntı:
Gerçek Mesajı Gönderen real_digital
peki c++ da yazsak napacaz?
Not:Konuyu yeni gördüm çok iyi bişey olmuş, Allah kolaylık varsin
_asm
{
.......
......
}

içine yazıcaksın...
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 22-08-05, 22:44 #30
 çevrimdışı
Varsayılan Cvp: Assembly Öğreniyorum..!

beyler sırf assembly derleyen bişey var mı?Yaw aslında saçma biraz."lan hiç bişey bilmiyon sanki 100000 satır kod yazacan da böle bişey istiyon" die ama işte hem merak hem de ben bu içine yazma işini hiç sevmedim.Aslında ii ama böle gerektiğinde. ben sadece assembly istiyorum.Bi yardım edin nolur.Bi de derslere dewam edelim benim bu assembly çok acayip bi merakım var.
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 22-08-05, 23:34 #31
aLi_X aLi_X çevrimdışı
Varsayılan Cvp: Assembly Öğreniyorum..!

walla benide bi merak sardı simdi
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 07-09-05, 03:59 #32
JustUnique JustUnique çevrimdışı
Varsayılan Cvp: Programlama öğrenmek istiyorum diyenler buyrun..

arkadaşlar bu konuya yeni dikkat ettim...madem pascal öğreniyorsunuz ilgilenen arkadaşlar için ben de bazı bilgiler vermek istedim...

assembly ve pascal ın beraber kullanılması hakkında biraz bilgi vermek istiyorum...
ufak bir örnek ile başlayalım...

program test;
uses crt;
var a:integer;

procedure toplam(x,y:integer);assembler;
asm
Mov Ax,x;
Mov Bx,y;
Add Ax,Bx;
Mov a,Ax;
end;

begin
toplam(2,3);
writeln(a);
readln;
end.

programın sonucu 5 olacaktır...bu tip bir programı belki çoğunuz görmüşsünüzdür...fakat şimdi biraz daha derinlere inelim....derinlere inmeden önce pascal içinde yazılan fonk. yada procedure lerin assembly kodda nasıl ele alındığını inceleyelim...

procedure toplam(x,y:integer);assembler; procedure undeki parametreler ve procedure un kendisi stack üzerinde şu şekilde ele alınır...

----------
???
----------
toplam <--Bp+8
----------
x <--Bp+6
----------
y <--Bp+4
----------
dönüş adresi <--Bp+2
----------
sonraki adres...
----------
stack a aktarılan bütün değerler integer olduğundan Bp(Base Pointer) ile belirtilen yer değişiklikleri 2'şer byte olur...

yani;

en başta Sp(stack pointer) "toplam" adresini gösterir ve 2 azalır...(azalmasının sebebi stackta işlem yaptığımız için,stack mantığı)

x parametresinin değeri Sp-2 ye yerleştirilir ve tekrar 2 azalır...

y parametresini değeri Sp-4 e yerleştirilir ve tekrar 2 azalır...

daha sonra programın kaldığı yerden devam etmesi için programın dönüş adresi Sp-6 ya yerleştirilir ve tekrar 2 azalır...

şu durumda en baştaki Sp nin değer Sp-8 oldu....

devam ediyoruz...ve Sp nin şu andaki değeri(yani gösterdiği adres) Bp ye aktarılır...

yani şu anda Bp=Sp-8 şimdi,
şimdi bizim x veya y parametresine erişmemiz gerekli...
x parametremiz Sp-2 ve y parametremiz Sp-4 de bulunuyordu...
x in adresine erişmek için ne yapmak lazım Bp ye 6 eklemek lazım di mi..
Bp=Sp-8 di...Bp+6 = Sp-8+6 = Sp-2 = x
aynı şekilde y yi de Bp+4 ile elde ederiz...

şimdi programımızı tekrar yazalım o halde...

bilmeyenler için söylüyorum... bir bellekteki değere erişmek için assembly syntax şu şekildedir...

mesela 100 adresinde 2 değeri olsun...
eğer adresi biliyorsak ve o adresteki değere erişmek istiyorsak
[100] şeklinde yazarız...
Bp içinde bir adres olduğu için [Bp] şeklinde kullanırız...veya [Bp+6] gibi...

program test;
uses crt;
var a:integer;

procedure toplam(x,y:integer);assembler;
asm
Mov Ax,[Bp+6]
Mov Bx,[Bp+4];
Add Ax,Bx;
Mov a,Ax;
end;

begin
toplam(2,3);
writeln(a);
readln;
end.

ewt arkadaşlar bu sabit bir programdı...isteyen olursa...daha ileri bilgiler ve grafik(assembly) ile ilgili bilgilerde verebilirim...

hadi hepinize kolay gelsin...
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 07-09-05, 11:01 #33
JustUnique JustUnique çevrimdışı
Varsayılan Cvp: Assembly Öğreniyorum..!

Alıntı:
Gerçek Mesajı Gönderen real_digital
beyler sırf assembly derleyen bişey var mı?Yaw aslında saçma biraz."lan hiç bişey bilmiyon sanki 100000 satır kod yazacan da böle bişey istiyon" die ama işte hem merak hem de ben bu içine yazma işini hiç sevmedim.Aslında ii ama böle gerektiğinde. ben sadece assembly istiyorum.Bi yardım edin nolur.Bi de derslere dewam edelim benim bu assembly çok acayip bi merakım var.
sırf assembly kod yazmak için MASM (macro assembler) ya da TASM(turbo asssembler) kullanacaksın...internette arat bulursun...ama bulamazsan ben sana gönderirim ikisini de....

hadi kolay gelsin...
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 20-10-05, 19:53 #34
The_Moon The_Moon çevrimdışı
Varsayılan Cvp: Assembly Öğreniyorum..!

Selamlar arkadaslar..Yepyeni bir konu ve gercekten zevkli bir dil daha )) Lady benim aklimdan gecen seyi yapmissiniz, gercekten gusel bir giris olmus yureginize saglik..Assembly 1 ve 0 kodlarininin yardimiyla machine language harekete gecirilmesi, assembly chiplerin calismasini saglayan belkide bir kirbac :P Compiler olarak kesinlikle en sagliklisi TASM.. Programlamaya girmeden once register lar offset adresleriyle , kullanilacak olan segmentlerle , memory dizilislerindeki boyutlarla ilgili bilgiler verirsek bence daha faydali olur..
Gercekten gusel bir calisma, bu sayfayi takip etmeyee calisacagim, imkanlar dahilinde konuyu anlatmayida isterim,Konuyu acan arkadasla iletisim kurarsak bunu beraberce anlatabilris..ama dedigim gibi her hangi bir sorun olursa ben bakiniyor olucam..Tekrar kolay gelsin ..Basarilar..
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 27-10-05, 21:24 #35
omerfaruk667 omerfaruk667 çevrimdışı
Varsayılan Cvp: Assembly Öğreniyorum..!

arkadasim çok teskür bende böyle bisey ariyordum ellerine saglik insallah sonuna kadar gidersin
çünkü çok merakliyim assembly diline
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 30-11-05, 20:31 #36
Ahmed HASAN Ahmed HASAN çevrimdışı
Varsayılan Cvp: Assembly Öğreniyorum..!

paylaşım için sağol takipçisiyim artık buranın...
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 01-12-05, 12:04 #37
mevobil mevobil çevrimdışı
Varsayılan Cvp: Assembly Öğreniyorum..!

arkadaşım ben de assembly öğrenmeye çalışıyorum. benim bir ihtiyacım var. assembly programlarını çalıştırabileceğim bir simulator arıyorum. sende varsa bana yardımcı olabilir misin mail yollarsan [email protected]
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 09-12-05, 04:39 #38
megalomaniac megalomaniac çevrimdışı
Varsayılan Cvp: Assembly Öğreniyorum..!

bir simulator derken? masm ile derleyp calsitirabilirsinn bi ara bulabilirsem assembly le nerler yapilabilecegini ozellikle en zor olanlardan grafik uzerine olan bi ste war insallah bulur yollarim hem kodlari da war icerisinde...
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 20-12-05, 23:05 #39
fateps fateps çevrimdışı
Varsayılan Cvp: Assembly Öğreniyorum..!

güzelde arkadaşım bir de kodların anlamını filan yazabilirsen program filna kırarken lazım oluyor... bi ara baya uğraşmıştım bunun için ... Kod ların anlamını biliyorsan buaraya atarsan sevinirim..


düzeltme::Sonradan diğer mesajları gördüm arkadaşlar gerek kalmadı..
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Eski 27-12-05, 03:55 #40
Awz-N Awz-N çevrimdışı
Varsayılan Cvp: Assembly Öğreniyorum..!

Beyler mesala bende bi *****'in "source" dosyalari var [birkactane yazi dosyalari] .Kullanabilmek icin assembly ile birlestirmem gerekiyormus...Yardim lutfen !
  Alıntı Yaparak CevaplaAlıntı Yaparak Cevapla
Cevapla

Bu konunun kısa yolunu aşağıdaki sitelere ekleyebilirsiniz

Konu Araçları

Gönderme Kuralları
Yeni konu açamazsınız
Cevap yazamazsınız
Dosya gönderemezsiniz
Mesajlarınızı düzenleyemezsiniz

BB code is Açık
Smiley Açık
[IMG] kodu Açık
HTML kodu Kapalı



Tüm saatler GMT +3. Şuan saat: 09:39
(Türkiye için artık GMT +3 seçilmelidir.)

 
5651 sayılı yasaya göre forumumuzdaki mesajlardan doğabilecek her türlü sorumluluk yazan kullanıcılara aittir. Şikayet Mailimiz. İçerik, Yer Sağlayıcı Bilgilerimiz. Reklam Mailimiz. Gizlilik Politikası. Tatil
Copyright © 2018