Assembly Programlama Dili |
2. Bölüm
Assembly programlama hakkındaki yazı serimizin ilk bölümünde Assembly dilinin ne olduğundan, avantajlarından ve dezavantajlarını bahsetmiştik. Serimizin ikinci bölümde ise “Assembly” dilinin teknik detaylarına inerek sayı sistemleri ve bellekte veri adreslemeden bahsedeceğiz.
06.08.2016 tarihli yazı 15286 kez okunmuştur.
Bir bilgisayarın donanımsal içyapısı temel olarak işlemci, bellek ve register’lerden oluşmaktadır. Register’ler, verileri ve adresleri tutan işlemci elemanlarıdır. Programı çalıştırmak için sistem programı dış aygıttan içerideki belleğe kopyalar. İşlemci ise programın komutlarını çalıştırır.
İşlemci aşağıdaki data boyutlarını destekler:
► Word: 2-byte boyutunda veridir.
► Doubleword: 4-byte boyutunda veridir.
► Quadword: 8-byte boyutunda veridir.
► Paragraph: 16-byte boyutunda veridir.
► Kliobyte: 1024-byte boyutunda veridir.
► Megabyte: 1.048.576-byte boyutunda veridir.
Assembly Diline başlamadan önce “İkili Sayı Sistemi ”ne ve “16’lı Sayı Sistemi”ne bakmakta fayda olacaktır.
İkili Sayı Sistemi (The Binary Number System)
Bütün sayı sistemleri konumsal gösterim kullanmaktadır. Konumsal gösterimden kastedilen, yazılan bir digitteki her pozisyon, farklı bir pozisyon değerine sahiptir. Her pozisyon tabanın bir kuvvetidir. İkilik sayı sisteminde taban “2”dir. Her pozisyon burada 2’nin kuvvetidir. Bu kuvvetler 0’dan başlar ve birer birer artar.
Aşağıdaki tabloda 8-bitlik bir sayının 2’lik tabandaki tüm pozisyonları verilmiştir:
Bilgisayarın en temel birimi “bit” olarak tanımlanmıştır. Bir bit “1” veya “0” olabilir. “1” açık olmayı, “0” kapalı olmayı ifade eder. 9 tane bit,bir “byte” yapar. Bu 9 tane bitten 8 tanesi veri için, kalan bir tanesi ise eşlik biti (parity bit) olarak kullanılır. Eşlik biti ya da parity bit olarak bilinen bu bit, ikilik tabandaki bitlerin tek veya çift olması esasına göre kontrol amaçlı olarak kullanılan bittir. Eşlik biti; çift eşlik (even parity) ve tek eşlik (odd parity) olmak üzere iki ye ayrılır. Çift eşlik, eşlik biti de dâhil olmak üzere bir karakterin içerisindeki 1 bitlerinin sayısının çift olmasıdır. Tek eşlik, eşlik biti de dâhil olmak üzere bir karakterin içerisindeki 1 bitlerinin sayısının tek olmasıdır.
İşlemci aşağıdaki data boyutlarını destekler:
► Word: 2-byte boyutunda veridir.
► Doubleword: 4-byte boyutunda veridir.
► Quadword: 8-byte boyutunda veridir.
► Paragraph: 16-byte boyutunda veridir.
► Kliobyte: 1024-byte boyutunda veridir.
► Megabyte: 1.048.576-byte boyutunda veridir.
Assembly Diline başlamadan önce “İkili Sayı Sistemi ”ne ve “16’lı Sayı Sistemi”ne bakmakta fayda olacaktır.
İkili Sayı Sistemi (The Binary Number System)
Bütün sayı sistemleri konumsal gösterim kullanmaktadır. Konumsal gösterimden kastedilen, yazılan bir digitteki her pozisyon, farklı bir pozisyon değerine sahiptir. Her pozisyon tabanın bir kuvvetidir. İkilik sayı sisteminde taban “2”dir. Her pozisyon burada 2’nin kuvvetidir. Bu kuvvetler 0’dan başlar ve birer birer artar.
Aşağıdaki tabloda 8-bitlik bir sayının 2’lik tabandaki tüm pozisyonları verilmiştir:
Yukarıda verilen, ikilik sayı tabanındaki sayı şudur: 1+2+4+8+16+32+64+128 = 255’tir. Bu sayı (28-1)’e denk gelmektedir.
16’lı Sayı Sistemi (The Hexadecimal Number System)
Heksadesimal yani 16’lı sayı sistemi 16 tabanını kullanır. Digitlerin aralığı 0 ile 15 arasındadır. Desimal yani 10’lu sayı sistemindeki 10 ile 15 arası sayılar, 16’lı sayı sisteminde “A” ile “F” arasına dönüşür.
16’lı sayı sisteminin kullanım amacı uzun ikilik sayıların gösterimini kısaltmaktır. Aşağıdaki tabloda heksadesimal, ikili ve onlu sayı sistemlerinin karşılıklarını görebilirsiniz:
İkili sayı sistemindeki sayıyı 16’lı sayı sistemine çevirmek için, sayı en sağdan başlanarak dörtlü gruplar şeklinde bölünür. Daha sonra her dörtlü gruptaki bitlerde 2’nin kuvvetleri alınarak heksadesimal sayıya çevrilir.
Örnek: 1000 1100 1101 0001 = 8CD1
Heksadesimal bir sayıyı ikilik sisteme çevirmek için ise her heksadesimal birim 4 digitli sayıya çevrilir.
Örnek: FAD8 = 1111 1010 1101 1000
İkili Aritmetik;
Aşağıdaki tablo ikili aritmetiğin temel kurallarını göstermektedir:
Yukarıdaki örnekleri açıklarsak eğer:
(i): 0+0 = 0
(ii): 1+0 = 1
(iii): 1+1 = (2)10 = (10)2
(iv): 1+1+1 = (3)10 = (11)2
Negatif ikili bir sayı “ikinin tümleyeni” gösterimine göre açıklanır. Bu kurala göre, bir sayının negatifini yapmak için tüm bitleri ters çevrilir ve 1 eklenir.
Örneğin;
Eğer iki sayıyı birbirinden çıkarmak istenilirse, bir sayı negatife çevrilir daha sonra diğer sayıyla toplanır.
Örneğin; 53 sayısından 42’yi çıkaralım:
Bellekte Veri Adresleme
Veri adreslemenin genel özellikleri şunlardır:
► İşlenenin nerde olacağını belirtmek için kullanılır.
► Buyruk çözme aşamasında adresleme yöntemi belirlenir ve işlenenin nerede bulunacağı hesaplanır.
► Genel olarak 6 temel adresleme yöntemi vardır.
► Bir mikroişlemcide bulunan adresleme yöntemlerinin sayısının çokluğu yüksek düzeyli dillerdeki karmaşık işlemleri daha kolay yerine getirmesini sağlar.
► Bir mikroişlemcinin adresleme yeteneği adres yollarını sayısı ile sınırlıdır.
16 bit ->216 farklı adres -> 65.536 byte
► Bellek adresleri, doğrudan buyrukta verilebilir ya da bir işaretçiden (başlangıç adresi) kaç adım ileride veya geride olduğu belirtilir.
► İşlenenin nerde olacağını belirtmek için kullanılır.
► Buyruk çözme aşamasında adresleme yöntemi belirlenir ve işlenenin nerede bulunacağı hesaplanır.
► Genel olarak 6 temel adresleme yöntemi vardır.
► Bir mikroişlemcide bulunan adresleme yöntemlerinin sayısının çokluğu yüksek düzeyli dillerdeki karmaşık işlemleri daha kolay yerine getirmesini sağlar.
► Bir mikroişlemcinin adresleme yeteneği adres yollarını sayısı ile sınırlıdır.
16 bit ->216 farklı adres -> 65.536 byte
► Bellek adresleri, doğrudan buyrukta verilebilir ya da bir işaretçiden (başlangıç adresi) kaç adım ileride veya geride olduğu belirtilir.
İşlemcide yapılan işlem getirme-çözme-çalıştırma sürecinden oluşur. Bu durum 3 basamaktan meydana gelir:
(i) Bellekten komutu getirme
(ii) Komutu çözme ya da tanımlama
(iii) Komutu çalıştırma
İşlemci birim zamanda bir ya da daha fazla byte’a ulaşabilir. 0725h heksadesimal sayısını düşünelim. Bu sayı bellekte iki byte’a ihtiyaç duyacaktır. Bu sayının yüksek değerli ya da en önemli byte’ı “07”, düşük değerli byte’ı “25”tir.
İşlemci veriyi ters byte sırasına göre bellekte tutar. Yani düşük düzeyli byte düşük bellek adresinde, yüksek düzeyli byte yüksek bellek adresinde tutulur. Register’den belleğe 0725h gidecekse eğer; ilk önce 25 yani düşük düzeyli byte düşük bellek adresine gönderilir. Daha sonra 07 olan yüksek düzeyli byte yüksek bellek adresine gönderilir.
Kaynak:
►pravaraengg
YORUMLAR
Aktif etkinlik bulunmamaktadır.
- Dünyanın En Görkemli 10 Güneş Tarlası
- Dünyanın En Büyük 10 Makinesi
- 2020’nin En İyi 10 Kişisel Robotu
- Programlamaya Erken Yaşta Başlayan 7 Ünlü Bilgisayar Programcısı
- Üretimin Geleceğinde Etkili Olacak 10 Beceri
- Olağan Üstü Tasarıma Sahip 5 Köprü
- Dünyanın En İyi Bilim ve Teknoloji Müzeleri
- En İyi 5 Tıbbi Robot
- Dünyanın En Zengin 10 Mühendisi
- Üretim için 6 Fabrikasyon İşlemi
- DrivePro Yaşam Döngüsü Hizmetleri
- Batarya Testinin Temelleri
- Enerji Yönetiminde Ölçümün Rolü: Verimliliğe Giden Yol
- HVAC Sistemlerinde Kullanılan EC Fan, Sürücü ve EC+ Fan Teknolojisi
- Su İşleme, Dağıtım ve Atık Su Yönetim Tesislerinde Sürücü Kullanımı
- Röle ve Trafo Merkezi Testlerinin Temelleri | Webinar
- Chint Elektrik Temel DIN Ray Ürünleri Tanıtımı
- Sigma Termik Manyetik Şalterler ile Elektrik Devrelerinde Koruma
- Elektrik Panoları ve Üretim Teknikleri
- Teknik Servis | Megger Türkiye
ANKET