Assembly Nedir?

Assembly Nedir?



Makinan?n anlayabildi?i tek dil 0 1 dir. zaman?nda abiler delikli ka??tla programlama yaparken demi?lerki hocam bu çok kas?yor. biraz bu i?i kolayla?t?ral?m makina dilini yazm??lar. makina dili çok h?zl?d?r. çünkü yap?lan tek i?lem hex i bin e çevirmek. Assembly ise biraz daha insanc?l olsun kafay? yicez abi deyip te makina dilinde yaz?lm?? bir dildir. Fakat Assembly ile Makina dili aras?ndaki ili?ki di?er diller ile makina dili aras?ndaki ili?kiden farkl?d?r. örne?in: “cmp al” nin kar??l??? “3c” dir. di?er dillerde dilin türüne göre interpreter(yorumlay?c?) veya compiler(derleyici) hatta baz?lar?nda her ikiside kullan?l?yor olmas?na kar??l?k makina diliyle “01h” nas?l “00001b” ediyorsa “cmp al” da Assemblyde “3c” eder. buda asseblynin önemsenmeyecek kadar kadar azbir h?z fark?yla çal??mas?n? sa?lar.

Makina Dili

a. Makina Dili 00001011 11010111 11010110 ………………….. ?kili Sistem

b. Makina Dili DF AC 12 1B 3C C8 D6 7B C8…………………. Onalt?l? Sistem

c. Mnemonic(Assembly Dili)

MOV AX,65

ADD BX,AX

.

.

.

Assembly Dili’nin Makina Dili ile ili?kisi bu ?ekildedir. Yukar?da yaz?l? kodlar sadece görsel bir fikir verebilmek için yaz?lm??t?r. Çal???r program parçalar? de?ildir.

Assembly’yi Neden Hala Kullanmal?y?z?

Üst düzey programlama dillerinde yazd???m?z programlar platform’a ba?l? (Windows, Linux, Unix vs.) çal???rlar. Biz e?er h?zl? yaz?l?m geli?tirip hedefimiz bu i?ten para kazanmaksa üst düzey diller bu i? için idealdir. Ne zaman ki biz bu platformlardan uzakla?al?m kendimize özgü bir?eylerimiz olsun dersek o zaman bu üst düzey diller bizim bu ihtiyac?m?za cevap veremiyecektir. ??te bu nokta bizi yaln?z b?rakmayan dillerden biri C di?eride Assembly’dir. C dili Assembly diline göre insana daha yak?nd?r. ?yi de madem öyle C tak?lal?m neden ?srarla Assembly?

C dilinde olmayan bir özelli?i C diline kazand?rmak istiyorsan?z Assembly Dilinden faydalan?rs?n?z. E?er Assembly bilmiyorsan?z C dilinin size sa?layaca?? bir çok avantajdan mahrum kal?rs?n?z. E?er ikisinide bilmiyorsan?z ba??ms?z program yazamazs?n?z. ??te bu iki dili di?erlerinden ay?ran en belirgin fark budur.

Bu yüzden biz Assembly’yi hala kullanmal?y?z.

Nedir Bu Hacker, Cracker Muhabbeti?

Dikkatinizi çekmi?tir etraf?m?zda mantar gibi ben hackerim diyen tipler dola?maya ba?lad?. Bu konuyu uzatmadan k?saca geçmek istiyorum. Harbi Assembly ve C programc?lar?n?n kas?p yazd??? disassembler editörleri vb. ni internetten indirip kullanarak program k?r?pda ben crackerim diye ortada dola?anlar hiç kusuru bakmas?nlar oturup kendiniz yazmad???n?z sürece hiçbi?eysiniz. Dallanma komutlar?n?n?n NOT’?n? almakla da bu i?ler olmuyor. Bilmem ne trojan?n? kullanay?m, x wormunu mail atay?m fake mail göndereyim vs. ile de hacker olunmuyor. Ben 15 y?l oldu bilgisayarla tan??al? ve kayna?al? 11 ya??md? (1991) programc? belgemi ald???mda fakat hacker de de?ilim cracker da. ?u güzelim terimleri a??zlara sak?z yapmay?n.(Bu i?in ciddiyetinin fark?na var?n).

Register Nedir?

Kelime anlam? olarak al?rsak kar??m?za Kay?tedici kelimesi ç?kar. Bu kelime bu i? için gerçekten çok idealdir. Kay?t ederler. Tabi ki kafalar?na göre de?il. Cpu program?n?n ve bizim program?m?z?n istedi?i ?eyleri kay?t eder. Daha önce 1 bitlik verinin haf?zada nas?l tutuldu?undan bahsetmi?tik, bkz.(flip-flop konusu).

Register Çe?itleri Nelerdir?

Genel Amaçl? Registerler;

AX : A(Accumulator)X :

En genel amaçl? registerdir. Ortada ne kadar angarya i? varsa bu regiter’e kaydederiz. Eskiler bu register’e ba? merkep ad?n? takm??t?r. As?l i? bu register üzerinde döner. Di?erleri AX’e i?ini yapmas?nda yard?mc? olur.

BX: B(Base)X:

Taban al?nacak adresler bu registerde saklan?r. Buraya koyaca??n?z bir taban adres üzerine koyaca??n?z say?kadar sonras?ndaki (veya öncesindeki) bilgiyi al derken i?te bu registerde tuttu?umuz taban de?erden faydalan?r?z.

CX: C(Counter)X:

Sayaç registeridir. Sayma i?lemleri için özelle?tirilmi?tir. BX te bahsetti?im olay farkl? yöntemlerlede yap?labilirken CX ten yard?m al?nmas? daha makbuldür.

DX: D(Data)X:

AX in ta??yamayac??? yüklerde yard?mc? olan registerdir. Elinizde 1.5 byte’l?k veri varsa AX 1 byte’tan fazlas?n? kald?ram?yorsa 0.5 byte’?n? da DX’e yükler bir seferde ta??rs?n?z.(siz yüklemiyorsunuz kendisi yüklüyor)

SI: SI(Source Index):

DI: DI(Destination Index):

Büyük verilerin bir bellek adresinden (Source), ba?ka bir bellek adresine (destination) ta??nmas?nda kullan?lan indexli adresleme metodunda source index’in tutuldu?u registerdir. DI’i de siz tahmin edin:).

BP: BP(Base Pointer):

Base adres üzerindeki belli bir noktay? i?aret etmek için kullan?lan registerdir.

SP: SP(Stack Pointer):

Y???t üzerindeki belli bir noktay? i?aret etmek için kullan?lan registerdir.

Segmet Registerleri;

CS: (Code Segment):

Program kodlar?n?n bulundu?u adresi tutan registerdir.

DS: (Data Segment):

Program verilerinin bulundu?u adresi tutan registerdir.

SS: (Stack Segment):

Y???t?n bulundu?u adresi tutan registerdir.

ES: (Extra Segment):

Ad? üzerinde.

FS: Bilmiyorum.

GS: Bilmiyorum.

Program Durum ve Kontrol Registeri;

FLAGS: (Bayrak):

Program çal??ma esnas?nda olu?an çe?itli durumlara göre flags registerinin bitleri 0 veya 1 halini al?rlar i?te bu 0 ve 1 durumlar?n?n tutuldu?u register flags registeridir.

Yönerge ??aretçisi;

IP: IP(Instruction Pointer):

Program hiyerar?isinin varl???n? sa?lar. Cpu program? i?lerken IP registerinin gösterdi?i noktadan ba?lar, ve sürekli IP registerinin yeni gösterece?i de?erleri takip eder. Bu sayede hiyerar?i bozulmam?? olur. program bir dallanma komutu ile kar??la?t???nda IP registerine dallan?lacak adres yaz?l?r Cpu program? i?lemeye IP registerine bakarak o noktadan itibaren devam eder.

Data Types: (Veri Tipleri):

Tüm programlama dillerinde oldu?u gibi Assembly dilinde de veriler belli kal?plar içerisine s?k??t?r?lm?? olmal?d?r. Çünkü bellek her zaman k?s?tl?d?r tutulacak verilerin yerle?imi ve yeniden geri ça?r?lmas? i?leminde veri depolanacak alan?n verimli ve standart kullan?m? bize anla??labilir kodlama ve en önemliside h?z kazand?racakt?r.

Bit: En küçük Haf?za Birimi: örnek: 1, 0 ba?ka örne?i yok. Sadece 1 yada 0.

Byte: 8 Biti yanyana koy 1 Byte eder: örnek: 10100101, 01001010.

Word: 2 Byte’? yanyana koy 1 Word eder: örnek:yukar?daki ikisi tek.

DWord:2 Word 1 Double Word eder.

QWord:2 Dword 1 QuadWord eder.

DQWord:2 QWord 1 DQWord eder.

Bu veri tiplerinden küçük olanlar büyük olanlara otomatik dönü?türülebilirler. Fakat büyük tiplerden küçük tiplere dönü?üm yap?lmaya çal??t???nda hata olu?ur. bir kaba alabilece?inden fazla su koydu?unuzda ta?mas? gibi. Üst düzey programlama dillerinde bu ta?ma overflow hatas? ile bildirilir. Assembly dilinde ise bu tür ta?malar? programc? flags registerinden faydalanarak yönetebilir.

Flags Registerine ileriki konularda ayr?nt?l? olarak de?inilecektir.

Yukar?da anlat?lanlan konular mümkün oldu?unca basite indirgenmi?tir. Bu yaz?lardaki amac?m insanlar?n sürekli Assembly ile program yaz?l?rm? olum kafay? yersin diyerek toplumu programlaman?n sadece formlar üzerine 2 tane component sürükleyip b?rakmak oldu?una inand?r?lmaya çal???l?yor olmas?d?r. Bu çabalar?n do?al sonucu olarak etraf?m?zda windowsu bilgisayar zanneden veya algoritma bilmeden program yazabilece?ini dü?ünenleri görmek kaç?n?lmazd?r. Bu gün .Net platform ba??ms?zl???n? vaad etmektedir. Linux için geli?tirilmekte olan Mono projesi (www.mono-project.com) umut vericidir. Bu proje oturdu?unda hiçbir ?ey eskisi gibi olmayacakt?r. (Örn: Ben bir oop ‘? .Net ortam?nda haz?rlay?p Mono ile Linux için derleyebilece?im veya tam tersi.) Bu durumda i?veren client makinalar?n?da Linux yapabilecek. vs. Neyse konuyu fazla da??tmayal?m.

Bir sonraki yaz?mda Assembly komutlar?n? anlatac???m. Tekrar görü?mek üzere.

ceviz.net’den al?nt?d?r.

İlgili etiketler

[ asm ] [ assembly ] [ bilgisayar ] [ dersler ] [ makina dili ] [ nedir ] [ programlama ] [ programlama dili ] [ ne zaman ] [ yaz?l?m ] [ hacker ] [ fal ] [ ka??t ] [ internet ] [ ceviz ] [ bellek ] [ mantar ] [ a??z ] [ toplum ] [ nelerdir ] [ isa ] [ hac ] [ cam ] [ ?rmak ] [ muz ] [ bira ] [ verem ] [ birim ] [ kelime ] [ terimler ] [ yard?m ] [ 110 ] [ sefer ] [ client ] [ sunu ] [ linux ] [ buda ] [ trojan ] [ adem ] [ pil ] [ orum ] [ remi ] [ odun ] [ alg ] [ aban ] [ proje ] [ çeri ] [ görsel ] [ görmek ] [ made ] [ makina ] [ urup ] [ t p ] [ i ki ] [ gram ] [ haf?za ] [ inan ] [ nokta ] [ byte ] [ anta ] [ belge ] [ kal?p ] [ gemi ] [ dikkat ] [ efe ] [ neden ] [ anlam? ] [ sis ] [ gra ] [ anlam ] [ rmak ] [ bal ] [ bilgi ] [ yaz? ] [ insanlar ] [ am?n ] [ asit ] [ t r ] [ mono ] [ mede ] [ elik ] [ desti ] [ devam ] [ parça ] [ oto ] [ a?r? ] [ nac ] [ rol ] [ bit ] [ compiler ] [ çe?itleri ] [ do?a ] [ akmak ] [ bell ] [ eter ] [ algoritma ] [ verici ] [ klan ] [ tu? ] [ t?p ] [ süt ] [ çi? ] [ inter ] [ tüp ] [ kad? ] [ nas?l ] [ erik ] [ yönerge ] [ dem ] [ utu ] [ çam ] [ ban ] [ eslem ] [ ataç ] [ k?? ] [ çal??ma ] [ rete ] [ tak? ] [ sac ] [ ç?? ] [ maki ] [ lal ] [ n r ] [ led ] [ i?aret ] [ faz ] [ ?ekil ] [ adlar ] [ muhabbet ] [ hack ] [ rnek ] [ saç ] [ örnek ] [ ak?n ] [ yöntem ] [ mut ] [ eto ] [ far ] [ gem ] [ deli ] [ kis ] [ anne ] [ ime ] [ umut ] [ k?sa ] [ tom ] [ fla ] [ crack ] [ ders ] [ kola ] [ harbi ] [ koy ] [ ben ] [ bah ] [ c dili ] [ etod ] [ ems ] [ kiler ] [ eren ] [ nternet ] [ basit ] [ emin ] [ oda ] [ ion ] [ aks ] [ terim ] [ ya?? ] [ oya ] [ çal??mas? ] [ nasyl ] [ izim ] [ do?al ] [ ?rak ] [ form ] [ anlamy ] [ code ] [ ceva ] [ ?pl ] [ nal ] [ idea ] [ kus ] [ dede ] [ zaman? ] [ neler ] [ yrak ] [ ak?l ] [ 230 ] [ program ] [ m ö ] [ mat ] [ bayrak ] [ arky ] [ ritm ] [ cpu ] [ dirili ] [ meden ] [ görü?me ] [ yazy ] [ s?k ] [ emo ] [ taky ] [ kady ] [ u?ur ] [ itleri ] [ akyl ] [ derleyici ] [ boz ] [ olum ] [ vir ] [ kü? ] [ görme ] [ yardym ] [ ykler ] [ www ] [ ?ran ] [ 111 ] [ assembler ] [ a??t ] [ ypl ] [ bozulma ] [ indir ] [ sak?z ] [ iller ] [ de?er ] [ yran ] [ k?z ] [ fazl ] [ counter ] [ hedef ] [ yüzde ] [ tern ] [ dim ] [ a an ] [ yama ] [ ki i ] [ rya ] [ kalyp ] [ lop ] [ kyz ] [ yard ] [ kafa ] [ roj ] [ oktay ] [ flop ] [ yaz?lar ] [ ker ] [ rsa ] [ angarya ] [ lata ] [ yuka ] [ gori ] [ platform ] [ yazm ] [ 821 ] [ ail ] [ avantajdan ] [ gram?n?n ] [ i ik ] [ s r ] [ e in ] [ ba a ] [ r za ] [ registerinin ] [ ka??tla ] [ dallanma ] [ sayac ] [ registerine ] [ registeridir ] [ siste ] [ amaya ] [ registerde ] [ i ne ] [ p t ] [ arkl ] [ diyet ] [ illerin ] [ flip-flop ] [ amaç ] [ sistem ] [ iline ] [ an ad ] [ amaz ] [ dala ] [ ernet ] [ illeri ] [ ükler ] [ site ] [ windows ] [ parçalar? ] [ com ] [ ürük ] [ sürek ] [ e?im ] [ dow ] [ teb ] [ t h ] [ mail ] [ ryp ] [ kazan ] [ özelli?i ] [ sayaç ] [ nide ] [ sur ] [ saya ] [ h?z ] [ k?saca ] [ forml ] [ tip ] [ akm ] [ takm ] [ diller ] [ tula ] [ zamany ] [ ürün ] [ c?? ] [ belle ] [ i?lem ] [ rem ] [ s re ] [ y n ] [ rt k ] [ ar s ] [ k p ] [ r n ] [ ni? ] [ pes ] [ t ? ] [ sak ] [ geri ] [ gin ] [ a tan ] [ p h ] [ üü? ] [ üt ü ] [ rekli ] [ örne?i ] [ ilim ] [ parçalar ] [ indirgenmi? ] [ indirgenmi ] [ sen ] [ rne ] [ madem ] [ ili?ki ] [ dini ] [ anı ] [ değer ] [ tıp ] [ leb ] [ uğur ] [ ırak ] [ t ı ] [ eğin ] [ yağ ] [ ç k ] [ arı ] [ kati ] [ tini ] [ dis ] [ irk ] [ raki ] [ akin ] [ kisin ] [ ipl ] [ kisi ] [ disi ] [ k pr ] [ ta t ] [ niğ ] [ reter ] [ maz ]

Destekliyoruz arkadaş - arkadaş - partner - partner - partner - wordpress temaları - çocuk oyunları - ben10 oyunları - jinekolog - kadın dogum doktoru - kadın doğum uzmanı - amerikan pastası - aksesuar oyunları -