![]() |
| |||||||
| Forum Arşivi Gereksiz,Yanlış konular bu alanda toplanır. |
| |
| |
| | LinkBack | Konu Araçları | Stil |
| | #1 (permalink) |
| Acemi Koxper |
:: 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 Hâlâ 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 hâlâ kullanmalıyız. Nedir Bu Hacker, *****er 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 *****erim 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 *****er 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. key: (Ç)alıntıdır...
|
| |
| 1 + Puan Aldı | RAZOR 1965 (12-28-2010) |
| | #8 (permalink) |
| GameMaster | qüzeL payLasım Kardeşim . ___[ RAZOR 1965 adlı kişinin İmzası]_______________ ![]() ![]() Msn Adresi: R4Z0R1965@hotmail.com İnternet Sitem: www.razor1965.tr.gg Server: Edana / Orc Job: Priest Pm: JohannyaLves Np: 115000 cLan: CantStop LeveL: 69 |
| |
| | #10 (permalink) |
| GameMaster | Konuyu Düzgün Yere acarsan Sevinirim. ___[ RAZOR 1965 adlı kişinin İmzası]_______________ ![]() ![]() Msn Adresi: R4Z0R1965@hotmail.com İnternet Sitem: www.razor1965.tr.gg Server: Edana / Orc Job: Priest Pm: JohannyaLves Np: 115000 cLan: CantStop LeveL: 69 |
| |
| Etiket |
| assembly, nedir |
| Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) | |
| Konu Araçları | |
| Stil | |
| |