Montaj - Giriş

Assembly Dili nedir?

Her kişisel bilgisayar, bilgisayarın aritmetik, mantıksal ve kontrol faaliyetlerini yöneten bir mikroişlemciye sahiptir.

Her işlemci ailesi, klavyeden girdi alma, ekranda bilgi görüntüleme ve çeşitli diğer işleri yapma gibi çeşitli işlemlerin gerçekleştirilmesi için kendi yönergelerine sahiptir. Bu talimat setine 'makine dili talimatları' adı verilir.

Bir işlemci, yalnızca 1'ler ve 0'ların dizeleri olan makine dili talimatlarını anlar. Bununla birlikte, makine dili, yazılım geliştirmede kullanmak için çok belirsiz ve karmaşıktır. Bu nedenle, düşük seviyeli montaj dili, sembolik kodda ve daha anlaşılır bir biçimde çeşitli talimatları temsil eden belirli bir işlemci ailesi için tasarlanmıştır.

Assembly Dilinin Avantajları

Birleştirme dili anlayışına sahip olmak, kişinin farkına varmasını sağlar:

  • Programlar işletim sistemi, işlemci ve BIOS ile nasıl arayüz oluşturur;
  • Verilerin bellekte ve diğer harici cihazlarda nasıl temsil edildiği;
  • İşlemci talimatlara nasıl erişir ve onu yürütür;
  • Talimatlar verilere nasıl erişir ve bunları işler;
  • Bir programın harici cihazlara nasıl eriştiği.

Assembly dilini kullanmanın diğer avantajları şunlardır:

  • Daha az bellek ve yürütme süresi gerektirir;

  • Donanıma özgü karmaşık işlere daha kolay bir şekilde izin verir;

  • Zaman açısından kritik işler için uygundur;

  • Kesme hizmeti rutinlerini ve diğer bellekte yerleşik programları yazmak için en uygun olanıdır.

PC Donanımının Temel Özellikleri

Bir bilgisayarın ana dahili donanımı işlemci, bellek ve kayıtlardan oluşur. Kayıtlar, veri ve adres tutan işlemci bileşenleridir. Bir programı yürütmek için, sistem onu ​​harici cihazdan dahili belleğe kopyalar. İşlemci, program talimatlarını yürütür.

Bilgisayar depolamasının temel birimi birazdır; AÇIK (1) veya KAPALI (0) olabilir ve 8 ilgili bitlik bir grup modern bilgisayarların çoğunda bir bayt oluşturur.

Dolayısıyla, eşlik biti bir bayttaki bit sayısını tek yapmak için kullanılır. Eşitlik eşitse, sistem, donanım hatası veya elektriksel bozukluktan kaynaklanmış olabilecek bir eşlik hatası (nadir de olsa) olduğunu varsayar.

İşlemci aşağıdaki veri boyutlarını destekler -

  • Word: 2 baytlık bir veri öğesi
  • Doubleword: 4 baytlık (32 bit) veri öğesi
  • Quadword: 8 baytlık (64 bit) veri öğesi
  • Paragraf: 16 baytlık (128 bit) alan
  • Kilobayt: 1024 bayt
  • Megabayt: 1.048.576 bayt

İkili Sayı Sistemi

Her sayı sistemi konumsal notasyonu kullanır, yani bir rakamın yazıldığı her konum farklı bir konumsal değere sahiptir. Her pozisyon, ikili sayı sistemi için 2 olan tabanın gücüdür ve bu güçler 0'dan başlayıp 1 artar.

Aşağıdaki tablo, tüm bitlerin AÇIK olarak ayarlandığı 8 bitlik bir ikili sayı için konumsal değerleri gösterir.

Bit değeri 1 1 1 1 1 1 1 1
Baz 2'nin gücü olarak konum değeri 128 64 32 16 8 4 2 1
Bit numarası 7 6 5 4 3 2 1 0

İkili bir sayının değeri, 1 bitin varlığına ve bunların konumsal değerine bağlıdır. Yani, belirli bir ikili sayının değeri -

1 + 2 + 4 + 8 +16 + 32 + 64 + 128 = 255

2 8 - 1 ile aynıdır .

Onaltılık Sayı Sistemi

Onaltılık sayı sistemi 16 tabanını kullanır. Bu sistemdeki rakamlar 0 ile 15 arasındadır. Geleneksel olarak, 10 ile 15 arasındaki ondalık değerlere karşılık gelen onaltılık rakamları temsil etmek için A'dan F'ye kadar olan harfler kullanılır.

Hesaplamada onaltılık sayılar, uzun ikili gösterimleri kısaltmak için kullanılır. Temel olarak, onaltılık sayı sistemi, her baytı ikiye bölerek ve her yarım baytın değerini ifade ederek ikili bir veriyi temsil eder. Aşağıdaki tablo ondalık, ikili ve onaltılık eşdeğerleri sağlar -

Ondalık sayı İkili gösterim Onaltılık gösterim
0 0 0
1 1 1
2 10 2
3 11 3
4 100 4
5 101 5
6 110 6
7 111 7
8 1000 8
9 1001 9
10 1010 Bir
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F

İkili bir sayıyı onaltılık eşdeğerine dönüştürmek için, onu sağdan başlayarak her biri 4 ardışık gruptan oluşan gruplara ayırın ve bu grupları onaltılık sayının karşılık gelen rakamları üzerine yazın.

Example - Binary sayı 1000 1100 1101 0001, onaltılı - 8CD1'e eşdeğerdir

Onaltılık bir sayıyı ikiliye dönüştürmek için, her onaltılık basamağı 4 basamaklı ikili eşdeğerine yazın.

Example - Onaltılık sayı FAD8 ikiliye eşdeğerdir - 1111 1010 1101 1000

İkili Aritmetik

Aşağıdaki tablo, ikili toplama için dört basit kuralı göstermektedir -

(ben) (ii) (iii) (iv)
1
0 1 1 1
+0 +0 +1 +1
= 0 = 1 = 10 = 11

Kurallar (iii) ve (iv), bir sonraki sol konuma 1 bitlik bir taşınmayı gösterir.

Example

Ondalık İkili
60 00111100
+42 00101010
102 01100110

Negatif bir ikili değer şu şekilde ifade edilir: two's complement notation. Bu kurala göre ikili bir sayıyı negatif değerine çevirmek, bit değerlerini ters çevirip 1 eklemektir .

Example

53 numara 00110101
Bitleri ters çevirin 11001010
1 ekle 0000000 1
-53 numara 11001011

Bir değeri diğerinden çıkarmak için, çıkarılan sayıyı ikinin tümleyen biçimine dönüştürün ve sayıları ekleyin .

Example

53'ten 42 çıkar

53 numara 00110101
42 numara 00101010
42 bitlerini ters çevir 11010101
1 ekle 0000000 1
Sayı -42 11010110
53 - 42 = 11 00001011

Son 1 bitin taşması kaybolur.

Bellekteki Verileri Adresleme

İşlemcinin talimatların uygulanmasını kontrol ettiği süreç, fetch-decode-execute cycle ya da execution cycle. Üç sürekli adımdan oluşur -

  • Talimatın bellekten alınması
  • Talimatı çözme veya tanımlama
  • Talimatı yerine getirmek

İşlemci aynı anda bir veya daha fazla bayt belleğe erişebilir. 0725H onaltılık bir sayıyı düşünelim. Bu numara, iki bayt bellek gerektirecektir. Yüksek sıralı bayt veya en önemli bayt 07 ve düşük sıralı bayt 25'tir.

İşlemci verileri ters bayt dizisinde depolar, yani düşük sıralı bir bayt düşük bir bellek adresinde ve yüksek sıralı bir bayt yüksek bellek adresinde depolanır. Dolayısıyla, işlemci 0725H değerini kayıttan belleğe getirirse, önce 25'i alt bellek adresine ve 07'yi bir sonraki bellek adresine aktaracaktır.

x: hafıza adresi

İşlemci, hafızadan kayıt için sayısal verileri aldığında, baytları yeniden tersine çevirir. İki tür hafıza adresi vardır -

  • Mutlak adres - belirli bir konumun doğrudan referansı.

  • Segment adresi (veya ofset) - ofset değeri ile bir bellek segmentinin başlangıç ​​adresi.