
Niçin Assembly
- Donanımla iletişim kurun (sürücüler, yerleşik sistemleri)
- Oyunlar, Grafikler
- Üst düzey programlamanın yapamayacağı bir şey (bağlam anahtarı)
- Programlamanın daha iyi anlaşılması (ters mühendislik)
Katmanlı Mimari
-
Bilgisayarlar karmaşıktır * Katmanlar -> soyutlama (Aşağıdaki katmanların karmaşıklığını gizleme)
- Ayrıca programlama dillerini de katmanlandırıyoruz!
- Program yürütme:
- Yorumlama
- Derleme (Çeviri)
- Her CPU’nun kendi “komut seti” için yerleşik bir yorumlayıcısı vardır (ISA, Komut Kümesi Mimarisi; ikili dildir programlandı)
Makine Seviyeleri
C++ Concepts
Java – Different Concepts
Temel Kavramlar
- Üst Düzey Bir Dil (C, C ++, Fortran, Cobol) derlenir (çevrilir) Assembly’e aktarılır.
- Assembly Dili (belirli bir CPU için) ikili makine diline birleştirilmiştir
- İkili makine dili şu şekilde yorumlanır: bilgisayardaki CPU’lardan biri
- CPU (Intel, AMD, vb.) Dijital mantık kullanır yorum yapmak ve üretmek için devreler sonuçlar
Linking ve Loading
- Montaj (MASM çalıştırma) aslında oluşturmaz yürütülebilecek bir program …
- Yapılması gereken (en az) 4 temel adım vardır. gerçekleştirilen:
- Montaj - kodu ikiliye çevir
- Bağlama - tüm parçaları bir araya getirin ve isimleri çözün
- Yükleme - programı belleğe taşıyın
- Yürütme - programı çalıştırın
Assembly Language
- Belirli bir CPU ailesi için tasarlanmıştır (ör. Intel x86)
- Bir anımsatıcıdan (basitleştirilmiş komut sözcüğü) oluşur ardından gerekli veriler.
- Örnek: mov eax, A
- A olarak adlandırılan konumun içeriğini sicile taşıyın
- Genel olarak her bir anımsatıcı (talimat), tek bir ikili CPU talimatı
CPU Instruction Set
- Ek B: (Intel IA-32) hepsini kapsamayacağız
- Her CPU için değişir
- Intel makineleri, CISC olarak bilinen bir yaklaşım kullanır
- CISC = Karmaşık Komut Seti Hesaplama
- Çok sayıda güçlü ve karmaşık (ancak yavaş) talimat
- RISC (Azaltılmış) ve yalnızca birkaç çok hızlı çalışan basit talimatlar
Digital Logic
- CPU’lar, aşağıdaki gibi dijital mantık kapılarından yapılmıştır.NAND, OR, XOR vb.
- Transistörler ve çeşitli aileleri kullanılarak gerçekleştirilir. silikon cihazlar
-
Süper karmaşık - Bir üzerinde milyonlarca transistör tek CPU
- Mantık,bilgi işlemin temel dili
Data Representation(Temsili veri)
- Bilgisayarlar ikili verilerle çalışır (bazen sekizlik taban 8 veya onaltılık taban olarak gösterilir 16)
- Bunlar arasında nasıl çeviri yapacağınızı bilmelisiniz.
- Bunlarda basit işlemler yapabilmenizi bekliyorum. bazlar (çoğunlukla sekizliyi göz ardı edebilirsiniz)
İkili Sayılar (2 Taban)
- Rakamlar 1 ve 0’dır
- 1 = doğru, akan akım / mevcut bir yük
- 0 = yanlış, akım yok / şarj yok
- MSB - en önemli bit
- LSB - en az anlamlı bit
- 0’dan başlayarak LSB’den MSB’ye numaralandırılmış bitler
Binary -> Decimal
- 2’nin kuvvetlerini öğrenin: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096,…
- Ardından, uygun güçleri toplayın
- 10110010 = 128 + 32 + 16 + 2 = 178
- Gerçek programcılar bir hesap makinesi kullanır! Sadece basit değerlere sahip olacağız sınavlarda bir hesap makinesine ihtiyacınız olmaz ve temel pratikler.
Decimal -> Binary
- Ondalık tamsayıyı tekrar tekrar 2’ye bölün. Her kalan bir çevrilen değerdeki ikili rakam:
İkili Toplama
- Normal eklemeyle aynı, sağdan sola
- 0 + 0 = 0
- 0 + 1 = 1, 1 + 0 = 1
- 1 + 1 = 0, 1 taşıma ile
Hexadecimal Numbers (Base 16)
- İkili değerler onaltılık olarak gösterilir
- O kadar zor değil: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F BUNA İHTİYACINIZ OLACAK! Programcılar Hex’te sık sık çalışıyor
Binary -> Hexadecimal
- Her onaltılık rakam 4 ikili bite karşılık gelir.
- Örnek: 000101101010011110010100
- İkili değeri 4 basamaklı gruplar halinde gruplayın (SAĞDAN başlayarak)
- 1,2,4’ün kuvvetlerini ekleyerek ikiliyi ondalık sayıya çevirin, ve 8
- E.g., 0100 = 4, 1001 = 8 + 1 = 9, 0110 = 4 + 2 + 1 = 7, 1010 = 8 + 2 = 10, 0110 = 4 + 2 = 6, 0001 = 1
- Ondalık sayıyı hex’e çevirin: 1 6 10 7 9 4 = 16A794
Hexadecimal -> Decimal
- 16: 1,16,256, 4096,… ‘nin kuvvetlerini bilmeniz gerekir.
- ÇOK ZOR! Bunun için bir hesap makinesi kullanın!
- ÖNEMLİ OLAN, DOĞRU TARAFINDAN rakamlar şunları temsil eder: 160, 161, 162,…
- AYRICA UNUTMAYIN: x0 = 1 tüm x
- İkili, sekizli, ondalık veya onaltılık tabanda en sağdaki rakam sayı, 0’ın üssünün tabanıdır
Integer Storage Sizes (Types)
Tamsayı Depolama Boyutları (Türler)
- Bayt = 8 Bit
- Kelime = 2 Bayt
- Doubleword = 2 Kelime = 4 Bayt
- Quadword = 4 Kelime = 8 Bayt = 64 Bit = 64 bit CPU için maksimum değer
Singed Integers
- En yüksek bit işareti gösterir.
- 1 = negatif, 0 = pozitif
- Onaltılık tamsayının en yüksek basamağı> 7 ise, değer negatif.
- Örnekler: 8A, C5, A2, 9D
Two’s Complement
-
Negatif sayılar, ikinin tamamlayıcı gösteriminde saklanır
- Katkı maddesi Tersini temsil eder
- Sayıyı toplamanın tersine eklerseniz, toplam sıfırdır.
Singed Binary <-> Decimal
- En yüksek bit 0 ise, onu doğrudan işaretsiz ikili olarak dönüştürün
- En yüksek bit 1 ise, sayı ikinin tümleyenleri biçiminde saklanır. pozitif eşdeğerini elde etmek için ikinci kez ikisinin tamamlayıcısı:
*Converting signed decimal to binary:
- Convert the absolute value into binary
- If the original decimal is negative, form the two’s complement
Max & Min Values
Karakter Saklama
- Karakter setleri (Aynı şeyin Varyasyonları)
- Standart ASCII (0 - 127)
- Genişletilmiş ASCII (0 - 255)
- ANSI (0 - 255)
- Unicode (0 - 65.535)
- Null ile sonlandırılmış String
- Boş bayt ve ardından gelen karakter dizisi
- Null, sıfır / 0 anlamına gelir
ASCII Tablosunu Kullanma
- Kitabın kapağının içine geri dönün (Bilmeniz gerekir) bu)
- Bir karakterin onaltılık kodunu bulmak için:
- A’nın ASCII Kodu 61 onaltılıktır
- Karakter kodları 0-31
- ASCII kontrolü
Endianizm
- Intel CPU’lar “Küçük Endian” dir
- Kelimeler, Çift Kelimeler ve Dörtlü Kelimeler için (yani, birden fazla bayt), En Az Önemli Bayt Önce Gelir
- Dört Sözcük (8 Bayt):
Boole Cebri
- Dijital devrelerin tasarlandığı temel model ve bir sonuç, hangi CPU’ların çalıştığı
- Temel assembly dili talimatları böylece Boolean işlemlerini gerçekleştirir (yani onları bilmemiz gerekiyor)
- George Boole tarafından tasarlanan sembolik mantığa dayalı
- Boole ifadeleri: NOT, AND, OR
DEĞİL Kapısı
- Bir Boole değerini tersine çevirir (ters çevirir)
- Boolean NOT operatörü için gerçek tablosu:
Ve Kapısı
Veya Kapısı
Operatör Önceliği
- Parantezler
- DEĞİL
- VE
- VEYA
Hakikat Tabloları
- Resmi olarak bunları oluşturmanız gerekmeyecek, ancak nasıl yapılacağını hatırlamalısınız. karmaşık bir mantıksal işlemin izini sürmek
- Son derece karmaşık mantıksal ifadeler genellikle kötü programın bir işaretidir yapı ve tasarım!
- Örnek: (Y ^ S) ∨ (X ^ ¬S)
Düşünceler …
- Assembly dili, yazılımın fabrikada nasıl inşa edildiğidir.En düşük seviyeler
- Assembly dili ile bire bir ilişkisi vardır.İkili makine dilinin.
- Çoğu programcı hiçbir zaman bir HLL’den fazlasını görmez (ör.C ++) içeride dilinin IDE’si olan(örneğin, Visual Studio) fakat görünen sadece count söz öbeği fakat arka tarafta ide tarafından daha fazla şey oluyor.
Ve…
- Artık kimse sekizlik kullanmıyor
- Hex, manipüle etmenin yararlı bir yolundan başka bir şey değildir ikili sayı sistemi.
- CPU’lar 3 şey yapar;
- Assembly programlama sadece daha büyük ve daha karmaşık görevleri yapmak için bu kavramlar kullanır.
- Ekle (temel tamsayı matematik)
- Karşılaştır (Boole cebri)
- Bir şeyleri hareket ettir.
Kısacası editör count söz öbeğini yüksek seviyeden alır Assembly diline cevirir çünkü işlemci “counttan “ anlamaz.