Assembly Öğreniyorum – 3

yollar

Bir mikroişlemcide 3 adet yol vardır ;

  1. Adres Yolu : Adres/Veri seçilir.
  2. Kontrol Yolu : Okuma işlemimi yoksa yazma işlemimi yapılacağı belirlenir.
  3. Veri Yolu : Veri gönderilir.

CPU tarafından gerçekleştirilen iki temel işlem vardır. Birincisi komutların yorumlanarak doğru bir sırada gerçekleşmesini sağlayan kontrol işlevi; diğeri toplama, çıkarma vb. özel matematik ve mantık işlemlerinin gerçekleştirilmesini sağlayan icra işlevidir. Bir mikroişlemcinin özelliklerini belirleyen bazı faktörler vardır. Bunlar;

  • Kelime Uzunluğu : İşlemcinin bir defada işleyebileceği verinin büyüklüğü.
  • Komut İşleme Hızı : Frekans ve zaman ters orantılıdır. İşlemcinin frekesı ne kadar yüksekse, komut işleme hızı düşer. Yani bu komutların daha kısa sürede işlenmesi anlamına gelir. ( F.T=1 )
  • Adres Büyüklüğü : Bellekler mikroişlemci tarafından adres yoluyla adreslenirler. Adres yolunun sayısı ne kadar fazla olursa adresleme kapasitesi de ona göre büyük olur.
  • Kaydedici Sayısı Ve Yapısı
  • Değişik Tipteki Komutlar : Bİr mikroişlemcide komut sayısının çok olması sisteme kolaylık sağlar ama bizim için önemli olan aynı zamanda bu komutların az cycle (devir, dolaşım, dönme) ile çalışmasıdır.
  • Farklı Adresleme Metotları : Bir verinin nasıl ve ne şekilde yerleştireleceği veya bellekten nasıl ve hangi yöntemle çağrılacağının belirlenmesi (doğrudan, dolaylı, indisli adresleme gibi) programcıya ekstra kolaylık sağlar.
  • İlave Edilecek Devrelerle Uyum : Mikroişlemciler bir sistemde tek başına kullanılamaz. EPROM, RAM, ROM vb. elemanlara ihtiyaç duyarlar ve bu elemanlar kullanılırken de mikroişlemciyle uyumlu olup olmaması önemlidir.

Mikroişlemciler farklı yapılarda olmasına rağmen temelde şu birimleri içerir :

  • Akümülatör
  • Program Sayıcı ( Program Counter – CP )
  • Komut Saklayıcı ( Instruction Register – IR )
  • Komut Kod Çözücüsü
  • Durum Saklayıcısı ( Condition Code Register – CCR )
  • Aritmatik Mantık Birimi ( Aritmatic Logic Unit – ALU )
  • Kontrol Birimi
  • Yığın Göstergesi ( Stack Point – SP )

Assembly Öğreniyorum – 2

Evet ilk yazım olan assembly öğreniyorum arama motorlarında yükselmiş ve okuldan birçok arkadaşım farkında olmadan siteme giriş yapmışlar. Bende daha faydalı olması adına assembly öğreniyorum isminde bir yazı dizisi oluşturmaya karar veriyorum. Okulda gördüklerimiz doğrultusunda bildiğim kadarıyla assemblyi sizlere aktarmaya çalışacağım. Bu sebeple en baştan başlıyoruz :)

Mikrobilgisayar Sistemleri Ve Assembler

Mikroişlemci temelde mantık kapıları, flip-floplar, sayıcı vesaklayıcılar gibi standart sayısal devrelerden oluşur. Kayıtçılar flip-flop grubudu. Her hücre bir ff (flip-flop) den oluşur. n bitlik kayıtçı n adet ff içerir ve n bitlik ikili bilgiyi tutabilir.3bitlik3ffgrubu

Load : Registeri seçmeye yarar.
Clear : Registerdaki bilgiyi sıfırlar.
CP : Sistemin hızını belirler. (Clock Palsi)

Decoder : n adet girişi 2^n çıkış olarak verebilen sayısal eleman olup, mikroişlemcilerde ve hafıza ünitelerine adres belirlemede, displayleri sürmede vs. kullanılır.

Encoder : 2^n adet girişi n adet çıkış olarak verebilen sayısal elemandır.

Multiplexer : 2^n girişi n adet seçme ucu vasıtasıyla tek çıkış olarak verebilen elemandır. Bir başka ifadeyle paralel gelen giriş bilgilerini çıkışa seri olarak aktarır.

Demultiplexer : Tek girişi n adet seçme ucu vasıtasıyla 2^n çıkış olarak verebilen elemandır. Elektronik cihazlarda demultiplexer tek-giriş çok çıkış (single-input multiple-output ) devresi (Switch) görevi yapar.

Not : Her işlemcide bir EPROM vardır. İçinde de komutlar vardır.

Clock Palsi : Her bir clock palsi bir işlem yürütülüyor anlamına gelir. Clock palsini şu şekile düşünebilirsiniz. 1 Kamyon dolusu karpuz ve onu manava aktaran 5 işçi. Bu işçiden 1si kamyonda 1si manavda. Bu 5 kişi birbirine karpuzları atarak kamyondan manava karpuzları aktarıyor. Fakat bu 5 kişi farklı zamanlarda bir sonraki kişiye karpuz atarsa, bir diğeri diğerine yetişemezse karpuzlar düşer. Bunun bir düzene sokulması gereklidir. Bu yüzden bir de davula tokmak vuran birisine ihtiyacımız vardır. Davulcu tokmağı ile davula her vurduğu anda karpuz taşıyanlar bir yanındaki kişiye karpuzu fırlatsın. Böylece sistemli ve sorunsuz bir şekilde kamyondaki tüm karpuzlar manava aktarılacaktır. CPU mimarisinde de clock palsi davulu çalan tokmakçıdır. Clock palsi her yükseldiğinde herkes bir işlem yapar. CPU mimarisine göre aynı anda bir veya birden çok işlem yapılabilir. Bu konuya ileride değineceğim.

clock-palsi

2 clock palsi arasındaki geçen süre 2.10¯9 sn (2 çarpı 10 üzeri eksi 9) dir.

Yazar : Uğur ESKİCİ

Kaynak göstermek koşulu ile alıntı yapabilirsiniz. Assembly öğreniyorum yazı dizim, 6802 Intel işlemcileri baz alınarak kendi yorumlarım/anlatımlarım, ders notlarım ve çeşitli internet kaynaklarından ufak alıntılar ile düzenlenlenerek yazılmıştır.

Assembly Öğreniyorum

Evet assembly öğrenmeye başladım :) Öncelikle assembly’nin wikipediadan aldığım tanımını yazmak istiyorum. Assembly dili karmaşık programlar yazmak için kullanılan düşük seviyeli bir programlama dilidir. Assembly insanlar tarafından anlaşılması zor olan makina dilinin sayısal ifadelerini, insanlar tarafından anlaşılarak programlanması daha kolay olan alfabetik ifadelerle değiştirerek düşük seviyede programlama için bir ortam oluşturur. Assembly kullanmanın amacı, ilk bilgisayarlarda yazılan programların daha az hata içermesi ve daha az zaman almasını sağlamaktır.

Assembly dilini makina koduna çeviren programlara assembler denir. Bir assembler’ı derleyiciden ayıran en önemli özellik bire bir dönüşüm yapmasıdır. Derleyiciler kodun tamamını okurlar ve kodun tamamını anlamlı bir programa dönüştürürler. Kodun her satırını tek tek okuyan ve uygulayan programlara ise yorumlayıcı denir.

Bugün ise mikroişlemci dersimizde ilk basit programımızı yazdık. Assembly bir hayli zor görünüyor fakat sıkıcı değil :) İlk assembly programımız (7+5)/4 = 3 işlemini yapan 6802 assembler programını yazmaktı. İlk soruyu hocamız çözdü :

CLR A
CLR B
Lda A #$07
Lda B #$05
ABA
ASR A
ASR A
SWI

Arama
Beni Yukarı Çıkar