Merhaba arkadaşlar günümüzde artık gereksinimi kalmayan ama hala bios ve virüs yazılımlarında kullanılan en eski assembly sizlere detaylı bir biçimde anlatacağız konu güncel olacaktır. Dersler basitten zora gidecektir. Eğer konuyu en güncel tutabilirsek çeşitli sistem programlarını yazmaya kadar devam edeceğiz ama ilk önce en basit işlerden başlayacağız. Kesinlikle yazılanlar kendimize ait olacaktır. Alıntı yapılmayacaktır. Ön not: Assembly sembolik bir makine dilidir. Makine dilini anlayabilmek ve uygulayabilmek için ilk önce makinanın yani bilgisayarın nasıl çalıştığını özetleyelim Elektriksel Terimler yani bir ekrana görüntü nasıl gelir. Bilgisayar nasıl çalışır Bilgisayar mühendisliği aslında sırf elektrik mühendisliği üzerine kurulmuş bir terimdir. Elektrik mühendisliğini anlamak için için herşeyden önce elektriğin temel birimleri ve boyutlarını bilmemiz gerekmektedir gelin elektriğin temel birimlerine ve boyutlarına bir göz atalım. Şimdi başlamadan önce bir not eklemek istiyorum. Her mühendislikte olduğu gibi bundada kütle, uzunluk, zaman ve yük var. Bunlara yanlış bilmiyorsam dünya çapında SI birim sisteminde tanımlanır SI 'ya geçmeden önce birde SI'lar "mks" metre kilogram saniye birimleri cinsinden şeçilmiştir. Yükün temel birimini hatırlarsak 6.25x10 üzeri 18 elektron yükü ile ilişkilendirilen Coulomb olarak tanımlanır. Şimdi SI'ya geçmek istiyorum. ÖNEK SEMBOL 10 ÜZERİ DEĞER piko p 10 üzeri -12 nano n 10 üzeri -9 mikro μ 10 üzeri -6 Mili m 10 üzeri -3 santi c 10 üzeri -2 desi d 10 üzeri -1 deka da 10 üzeri 1 hekta h 10 üzeri 2 kilo k 10 üzeri 3 mega M 10 üzeri 6 giga G 10 üzeri 9 tera T 10 üzeri 12 Şimdi birde uzunluk kütle zaman yük terimlerini size açıklayacağım. Uzunluk L => LENGHT Kütle M => MASS Zaman T=> TİME Yük Q=> AÇILIMINI TAM BİLMİYORUM Şimdi bu kadar açıklamadan sonra temel devre elemanlarına geçmek istiyorum Pasif ve aktif elemanlardan oluşur. Pasif devre elemanları; Kondansatör = Elektriği depolar. Bobin = Sarmaldır, aynı zamanda indüksüyon yapımındada kullanılır. Direnç = akımın değeri "REZİSTANS" Her zaman aktifler Diyot = pozitif ve negatif yüklü elektronların alış verişi Transistor = Elektrik direncini ayarlar. Transistorlerin bilgisayarda çalışma tipleri: Biri alır biri toplar diğeri ise iletir. Bu arada direnci ayarlar Bobin çalışma sistemi Bilgisayarlara gelen elektrik tipi AC değildir yani bir bilgisayar alternatif akımdan direk yararlanması için alternetif akımı direk akıma çevirmelidir AC => DC olmalıdır. AC=>DC ÇEVRİLİR UNUTMAYIN DC gerilim uygulanırsa, Bobin DC akıma ilk anda direnç gösterir. Bu nedenle bobine DC akım uygulandığında bobin ilk anda yalıtkan daha sonra iletkendir. Bobine AC yani alternatif akım uygulandığında ise akımın yönü devamlı değiştiği için bir direnç gösterir. Kondansatör Olmaz olmaz'dır bilgisayarın en işler parçalarından biridir. Bir kondansatör elektrik yükü depolar, reaktif güç uygular veri kaybını önler. Alternatif akımı direkt akıma çevirmekte üstlerine yoktur. Detaylarına baktığınızda ise renk kodları ve harf kodları üretmekte olduğunu görürsünüz Direnç Direnç bir rezistans görevi görür. Diyot Bir yöne akım iletitir diğer tarafa çok büyük basınç uygular. Şimdi artık bu sıkıcı terimleri bitirdik ve assembly program yazmaya hazırız. Assembly Nedir? Assembly intel çıkardığı sembolik makine dilidir. Doğrudan donanıma hitap eder. Bir program çalışırken mutlaka bir adrese başvurur bunu yaparken akümülatör vs. kullanılır. Segmentffset yapısı SEGMENT=BÖLÜM OFFSET =GÖRECELİ KONUM ADRESİ YANİ BÖLÜMÜN İÇİNDE BÖLÜM Şimdi artık neden hep assembly virüslerde offsetvirus kullandığını anladık. Çünkü doğrudan disk sektörlerine erişmeleri lazım neyse fazla uzatmadan assembly'nin temel kurallarına geçmek istiyorum akümülatörler ah-> bu akümülatör çok küçük bit değer alır genelde fonksiyonu akümülatöre atarken kullanılır. al -> 8 bitlik bir akümülatördür genellik 16 tabanlı sayılar için kullanılır = ACC LOCATİON ax -> 16 bitlik akümülatördür günümüzn kullanılan akümülatörlerindendir FAT sistemlerine ve dosya sistemlerine müdehale etmek için idael boyuttaki akümülatördür. eax -> 32 bitlik akümülatördür. İşlevi fazladır. BIOS yazmada veya eeprom yazmada kullanılır. Örnek: ah= Kod: mov ah, 9 mov ax, video_mod int 10h Burada ah'ye 9 numaralı fonksiyonu uyguladık ve video modunu ax'e yerleştirdik. Ve 10h sistem kesmesini çağırdık ASSEMBLY'NİN EN ÖNEMLİ OKUMA KURALI SAĞDAN SOLA OKUNUR!!!!!!! ax kullanımı Kod: xchg ax, word ptr ax'e düşük anlamlı bir word atadık. al kullanımı Kod: mov al,3 al'ye 3 fonksiyon numarası olarak atadık eax kullanımı Kod: mov eax, byte ptr eax'ı byte noktalıyıcısındaki sabitleri aktardık Bölge adresleme... 1 GÜNE YAZIMI BİTECEK UZUN BİR KONU.. -

eski olmasına karşı aslında herşey assembly de saklı... tam anlamıyla bir öğrenebilsem. yine hiçbirşey bilmediğim aklıma geldi

bravo

eyvallah çok teşekkür ederim vakit ayırıp cevap yazdığın için

Selam dost naber :d Bende farkındayımda mesajı uzunluğu sınırlı o işten dolayı flood oluyor... Saygılar...

çalışman için teşekkürler. assembly ismini çok duydum yazdıklarınızıda okudum. ama bu programda nasıl çalışcaz yani ben assembly çalışmak istiyorum ama nerde nasıl birde x86 ile başka bir şey daha vardı hangisini çalışmalıyım. ayrıca programı varmı belki yazdıklarım saçma çünkü assembly diğer dillere göre farklı. ama şunu söylim çok zor.

Kutluhan Öncelikle yorumunuz için teşşekürler, assembly zaten genelde dünyada 8086 dediğiniz x86 kullanıyor, daha bunun 8085 falanda var ama onlarda birbirine benziyor x86 şu an dünyada kullanılıyor. Assembly çalışmanıza gerekyok kısaltmaları ezberleyin yeter en kısa zamanda ben buraya kısaltmaları sizin için yazacağım açıklamalarıyla.

Önemli değil, Megabros abi önemli olan geçmişe dönüş ve eski zamanların en popüler dili ama şu an hiç bir ilgi görmeyen assembly'yi canlandırmak Saygılar...

Genel programlama üzerine bu bölümde okunanların faydalı olacağını düşünüyorum.. Güzel bi anlatım olmuş teşekkürler + ... Saygılar..

base adreslerinde bir adrese nasıl veri yazılır eeprom'a cmos'a vs... çok yakında

yani bunun programı yokmu yazdıgımız kodları nereye yazıyoruz kodların dogruluğunu nasıl anlıyacaz. bugün assembly ile ilgili kitap baktım. kitap adı turbo c basic pascal için assembly. hiç bilmediğim için yorumlarımı mazur görün yani c içinde mi assembly var. açarsanız sevinirm konuyu. şunu söylim assembly zor gibi gözüküyo. size şunu sormak isterim cevap yazarsanız sevinirim ismi unutulmaya başlayan zor gibi gözüken bu programlama dilini üst düzeyde bilirsem bunun bana artısı ne olacak. bu soru tabii herkes için geçerli.

Dersler bitmiştir, her seferinde dökümanlarımızı fatal'la " elimizle" ararıştırarak sorarak hangisi en iyi gider diye yazıyoruz ve daha ilk mesajlardan ilgi görmediği belli oluyor... Saygılar.. - Root@

Bu arada birşey eklemeyi unuttum şu yukardaki =ax'e eşittir bunu unutmayın en önemli bir olaydır. En kısa sürede şu base adresleme olaylarını yazmaya çalışıyorum... saygılar...

haklısın Mbk arkadaşım ama öğrenemem demeyin aslında bir çözdünüz mü gerçekten düşük seviyeli bir dil olduğunu anlayacaksınız. Ama assembly siz çözmeye çalışın diğer dilleri öğrenmek çok hızlı olacaktır. Saygılar...

Önemli değil

Merhaba arkadaşlar dersin ikinci konusu olan base address 'leme konusunu şu anda bitirdim. Baya uzun sürdüğü için özür.100% kendi yapımım Base adresleme için bölge belirleyiciler BX BX'in açılımı; Base register demektir. X ise bilinmeyen bir bölgeyi temsil ederç BX'lerin alt değerleri şöyledir. BH BL BH nedir? Genellikle bu tip adresleyiciler içine fonksiyon yada daha küçük sayılar yüklenmesi veya verileri askıda tutması için kullanılır. Bunun için şu komutu kullanırız. Kod: xchg ah, FF mov bh, ah Anlamı ah=FF FF 1111 1111; Sonra ise ah->bh'ye taşıyoruz. Veri askıda nedeni ise bh için belli bir değer belirtmedik. Şimdi ise offset olaylarına değineceğim Şimdi offset ne demekti? Offset terimi assembly'de bilinmeyen yerleri segment içerisinde belirler göreceli konum adresini segment içinde arar mesela; ->offset alfa ->offset beta Bunlar kendini yüklenmeden önce bellekte kendilerine abuk subuk yerler açarlar. Ondan önce ise kendilerinin belli bir adresi yoktur. Şimdi bir 32bitlik programdaki bx'in nasıl olduğunu belirteceğim extended=genişletilmiş ebx Mesela biz ne istiyoruz. Şu bx bölgesindeki kodu ax aracılığı ile taşıyacağız ardından ax'teki veriyi genişletip eax'a atacağız ordan zaten iki değer'de 32bitlik olduğundan dolayı artık ebx'e -> eax'a yüklenebilir öyle değilmi? Pekala şimdi dediğim gibi mini minaccık bir program yazalım; Kod: mov ax, bx movsx eax, ax push eax mov ebx, eax Pekala buradaki işlemde bx'teki veriyi ax'a attık sonra ax'teki veriyi 32bit genişleterek eax'a attık, ardından eax kaydettik ve şimdi eax'ı yeni ebx'e atatık. Bir hatamız yok değilmi? Şimdi birde şu ah+al=ax olayının Birde bh+bl=bx olayına bakalım bu iki olayı 32bit çıkaracağım BH+BL | +>BX>BX+BL>EBX ; AH+AL | +>AX>AX+AL>EAX BX neden bx? Nedeni çoğu zaman bx kullanıyoruz ve şu andada ideal görünüyor. Şimdi biraz assembly ve virüs yazmaya değineceğim Assembly'de en güçlü virüsler ve işlek virüsler yazılabilir. Örneğin; . EXE ve . COM silen bir virüs veya MBR'yi bozan virüsler yazılabilir. MBR BOZULURSA DİSKE ERİŞMEK İMKANSIZ OLUR! . COM dosyalardan hiç şüphesiz en önemli dosya COMMAND. COM'dur. ee bu dosya silinirse ne olacağını siz tahmin edin :d Şimdi diyelim mbr'ye nasıl yazılacağını ben anlatmıyacağım çünkü bunu anlatırsam zaten virüs yazmamanız için hiç bir sebep kalmaz onun için sizi bir sayfadan yönlendireceğim Burdan buyrun Evet artık base adreslemeleride bitirmiş olduk kısa bir süre sonra CX'ler gelecek Saygılar FataL.

wow!.. devasa ve süper anlatımlar yapacağız anlaşılan. keşke ilk dil seviyelerinden bahsetseydik. bu arada cok flood yapmışsın dostum. hoş karşılanmayabilir olabildiğince tek mesaj halinde yazmaya çalış.

eline sağlık dostum Volatile.

Bu dili bilirseniz; 1. En iyi virüsleri yazabilirisiniz. 2. BIOS ve EEPROM yazılamları yapabilirsiniz. 3. Kendi programlama dilinizi tasarlayabilirsiniz. 4. Herhangi bir donanımsal sorunlarda işleminizi küçük bir program yazarak bile halledebilirsiniz.. 5. Bütün dillerin temelidir. Diğer dilleri öğrenmeyi kolaylaştırır. 6. Her dilin içerisinde nerede kullanılabiliyor. komutu "#pragma inline"-> kütüphanelerin hemen altına ekleyin. . 7. Her zaman bilgisayara en iyi şekilde hükmetmenizi sağlayan dildir. Daha bir sürü var, kodların yazılacağı derleyiciler; MASM32 TASM Bu kadar aslında zor makina dili falanda değil sadece işlemci sisteme verdiği komutların kısaltması Saygılar...