mikroişlemciler -...

88
Mikroi ş lemciler Öğr. Gör. Kürşat Mustafa KARAOĞLAN 2014-2015 Güz

Upload: others

Post on 18-Sep-2019

41 views

Category:

Documents


0 download

TRANSCRIPT

Mikroişlemciler

Öğr. Gör. Kürşat Mustafa KARAOĞLAN

2014-2015 Güz

Temel Bilgiler

Temel Bilgiler

Mikroişlemciler Anolog, Sayısal, İkili İşaret

! Günlük hesaplamalarımızda kullandığımız sistem onluk sayı sistemidir ve bu sistem 0,1,2,3,4,5,6,7,8 ve 9 rakamlarından oluşur. Diğer sayılar ise bu rakamlar kullanılarak elde edilir. Kullandığımız bilgisayar için (aslında tüm elektronik cihazlar için dersek daha iyi olur) durum böyle değildir. Bilgisayar binary sayı sistemi dediğimiz ikilik sayı sistemini kullanır ki bu sistemde sadece 0 ve 1 vardır.

! Bilgisayar için 0’ın anlamı “yanlış” ( FALSE ) ve 1’in anlamı ( TRUE) “doğru”dur. Buna karşın assembly programları yazılırken kullanılan sayı tabanı hexadecimal olarak bilinen on altılık sayı tabanıdır.

! Bu sistemde kullanılan ilk on rakam onluk sistemdeki ile aynı olup 0,1,...,9 rakamlarından oluşur. 10, 11, 12, 13, 14 ve 15 için sırasıyla A, B, C, D, E ve F harfleri kullanılır. On altılık sayılar gösterilirken sonlarına “h” veya “H”harfi konur. Assembly dili ile onaltılık sayı sisteminin kullanılmasının sebebi, bellek adresi gibi uzun rakamların ikilik sistem ile gösterilmesinin zorluğudur. Sayı tabanı büyüdükçe herhangi bir sayıyı göstermek için gereken basamağın sayısının azalacağı açıktır. Mesela “1BA5:010F” gibi bir bellek bölgesinin a d r e s i n i i k i l i k s i s t e m i l e g ö s t e r m e k i s t e s e y d i k “0001101110100101:0000000100001111” şeklinde olacaktı ki bu hem akılda tutması hem de yazması zor bir sayı.

Temel BilgilerSayı Sistemleri

Temel BilgilerBitler Üzerinde Mantıksal İşlemler

! Bayt için değer aralığı 0-255 word için 0-65535 ! Negatif sayıları kullanmak istersek bu durumda bayt, word veya long için

ayrılan bölgenin yarısı negatif diğer yarısı da pozitif sayılar için tahsis edilir. Yani bir baytın alabileceği değerler –128....-1 ve 0....127 arasında

! olur. Aynı şekilde word için bu değer –32.768......+32.767 arasında olur. Bir bayt, word yada long için en soldaki bite işaret biti denir. İşaretl sayımızın işaret bitinin değeri 0 ise sayı pozitif, 1 ise negatif olarak değerlendirilir.

! 0110 0101 1110 1100 pozitif bir sayı (word) ! 1000 1100 1010 0000 negatif sayı (bayt) ! Herhangi bir sayının negatifini bulmak için ikiye tümleyeni bulunur. Bu iş

için ! 1) Sayı NOT işleminden geçirilir ! 2) Elde edilen sonuca 1 eklenir ! –13 sayısı için; ! +13 = 0000 1101 (bayt)

İşaretli ve İşaretsiz Sayılar

! Bit dizgileri üzerinde yapılan bir diğer mantıksal işlemler de kaydırma (shift) ve döndürme (rotate) işlemleridir. Bu iki işlem kendi içlerinde sağa kaydırma (right shift), sola kaydırma (left shift) ve sağa döndürme (right rotate), sola döndürme (left rotate) olarak alt kategorilere ayrılabilir.

Shift ( Kaydırma ) ve Rotate ( Döndürme ) İşlemleri

Mikroişlemcilere GirişDevam

! Mikroişlemciler (CPU- Central Processing Unit) kullanıldığı elektronik sistemlerin yönetimini ve yapılmak istenen işlerin yürütülmesini sağlar.

! Bellekte bulunan komutları belirli bir sistematik sıra ile işler. ! FETCH : Komutun bellekten alınması (Al-Getir), ! DECODE: İşlem kodunun çözülmesi, ! EXECUTE : İşlemin yerine getirilmesi, uygulama ve işlemi tamamlama (Comlete Process) gibi aşamaları gerektirir.

! Bazı komutlarda işlem sonucunun W ya da file register’ine yazma süreci olarak düşünülmüştür, bazı komutlarda ise işlem tamamlama süreci yoktur

Mikroişlemcilere Giriş

İşlemci Tarihçesi ve Özellikleri

Mikroişlemci Blok Diyagram

! Bu elemanlar temel olarak ; 1. Giriş ( Input ) Birimi 2. Çıkış (Output ) Birimi 3. Bellek (Memory ) Birimi’dir

! Bu üç birim CPU dışında olduğundan aralarındaki iletişimi veri yolu (Data Bus) ve adres yolu (Address Bus) ile Kontrol Hatları (Control Lines) denilen lojik iletim hatları sağlar.

Mikroişlemciler Temel Donanım Elemanları

1. Kelime Uzunluğu : ! Mikro işlemcinin her saat darbesinde işlem yapabileceği bit

sayısına kelime uzunluğu denir. ! İşlenen veriler işlemcinin özelliğine göre 4-bit, 8-bit, 16-bit,

32-bit ve 64-bit uzunluğunda olabilir. ! Kelime uzunluğu veri yolu uzunluğuna eşittir. İşlemci, her

saat darbesinde işleyebildiği kelime uzunlu ile tanımlanır. Intel 8086 işlemcisinin kelime uzunluğu 16-bit olduğu için 16-bitlik mikro işlemci denir. İşlemciler dört, sekiz, on altı, otuz iki ve altmış dört bit olarak sınıflandırılır

Mikroişlemcileri Birbirinden Ayıran Özellikler

Mikroişlemcileri Birbirinden Ayıran Özellikler

2. Komut İşleme Hızı: ! Mikro işlemcilerin çalışması için saat sinyallerine ihtiyaç vardır. İşlemci (CPU) her saat sinyalinde bir sonraki işlem basamağına geçer. İşlemcinin hızını incelerken saat frekansına ve komut çevrim sürelerine bakmak gerekir. Saat frekansı mikro işlemciye dışardan uygulanan ya da işlemcinin içinde bulunan osilatörün frekansıdır. Komut çevrim süresi ise herhangi bir komutun görevini tamamlayabilmesi için geçen süredir.

Mikroişlemcileri Birbirinden Ayıran Özellikler

! CPU tasarım teknolojisi ! Kelime uzunluğu ! İşlemci komut kümesi çeşidi ! Zamanlama ve kontrol düzeni ! Kesme altyordamlarının çeşitleri ! Bilgisayar belleğine ve giriş/çıkış aygıtlarına erişim hızı

Mikroişlemcileri Birbirinden Ayıran Özellikler

3. Komut İşleme Hızı: ! Bir işlemcinin adresleme kapasitesi, adresleyebileceği veya doğrudan erişebileceği bellek alanının büyüklüğüdür. Bu büyüklük işlemcinin adres hattı sayısına bağlıdır. Bu hattın sayısı tasarlanacak sistemde kullanılabilecek bellek miktarını da belirlemektedir. Bir firmanın 6800, Zilog Z-80, Intel 8085 ve Mostek 6502 mikro işlemcileri 16 adres hattına sahiptir. 16-bitlik adres hattına sahip bir mikro işlemcinin adres büyüklüğü 216 ile 65536 olacaktır. Bu miktar yaklaşık 64 KB ile ifade edilir.

Mikroişlemcileri Birbirinden Ayıran Özellikler

4. Komut İşleme Hızı: ! Bir programcının assembly diliyle program yazımı sırasında en çok

ihtiyaç duyduğu geçici bellek hücreleri kaydedicilerdir. Mikro işlemcilerde kaydediciler, genel amaçlı kaydediciler ve özel amaçlı kaydediciler olmak üzere iki grupta toplanır. Tüm mikro işlemcilerde bu gruplara dâhil edebileceğimiz değişik görevler atanmış, farklı özellikte, sayıda kaydediciler bulunur. Bu kaydediciler 8, 16, 32 ve 64-bitlik olabilir. Kaydedicileri sayısının programcının işinin kolaylaştırmasının yanında programın daha sade ve anlaşılır olmasını da sağlar. Her mikro işlemcinin kendine has yapısı ve kaydedici isimler vardır. Herhangi bir mikro işlemciyi programlamaya başlamadan önce mutlaka bu kaydedicilerin isimlerinin ve ne tür işlevlere sahip olduklarının iyi bilinmesi gerekir.

Mikroişlemcileri Birbirinden Ayıran Özellikler

! Mikro denetleyiciler, mimarileri bellek organizasyonu referans alınarak 'Princeton / Von Neuman' ve 'Harvard‘ mimarileri olmak üzere iki farklı gruba ayrılabilir.

Mikroişlemciler Hafıza Organizasyonu Bakımından

Mikroişlemciler Hafıza Organizasyonu BakımındanDevam

[X] ; X’in içeriği ! ; (Veri transferini belirtir. Sol kısım hedef, Sağ kısım kaynak) [MAR]![PC] ; PC’nin içeriği MAR saklayıcısının içerisine aktarılır.

Örn : [3]![5] ; 5. konumun içeriği 3. konuma aktarılır. [PC]![PC]+1 ; Program sayıcısının içeriğini 1 arttır. [M(x)] ; Belleğin x konumunun içeriği [M(20)]!PC] ; Belleğin x konumunun içeriği PC’nin içeriği ile yüklenir.

[AX] !1026 ; Desimal 1026 AX’e aktarılır. [AX] ! % 10000000010 ; % binary’i ifade eder.

[AX] !$ 402 ; $ Hexadesimal’i ifade eder. [M(20)] = 6 ; Belleğin 20 konumunun içeriği 6’ya eşit. [M(20)] ! 6 ; Belleğin 20 konumunun içerisine desimal 6 yerleştirilir. [M(20)] ![M(6)] ; Belleğin 20 konumunun içerisine 6’nolu bellek konumunun içeriği yerleştirilir. [M(20)] Å[M(6)] +3 ; Belleğin 20 konumunun içeriği 6’nolu bellek konumunun içeriğine 3 eklenerek oluşturulur.

RTL (Register Transfer Lang.)

! Intel’in X86 mimarisine dayalı işlemci serisinin ortaya çıktığı 70’li yıllarda, RAM’lerin pahalı ve kısıtlı olması sebebiyle bu kaynakların tasarruflu bir şekilde kullanılarak yüksek seviyeli dillerin desteklenmesini savunan bazı tasarım mimarları bir araya gelerek CISC mimarisini geliştirmişlerdir. Bu mimari, programlanması kolay ve etkin bellek kullanımı sağlayan tasarım felsefesinin bir ürünüdür. Her ne kadar performans düşüklüğüne sahip olsa ve işlemciyi karmaşık hale getirse de yazılımı basitleştirmektedir.

! CISC mimarisinin karakteristik iki özelliğinden birisi, değişken uzunluktaki komutlar, diğeri ise karmaşık komutlardır. Değişken ve karmaşık uzunluktaki komutlar bellek tasarrufu sağlar. Karmaşık komutlar iki ya da daha fazla komutu tek bir komut haline getirdikleri için hem bellekten hem de programda yer alması gereken komut sayısından tasarruf sağlar. Karmaşık komut karmaşık mimariyi de beraberinde getirir. Mimarideki karmaşıklığın artması, işlemci performansında istenmeyen durumların ortaya çıkmasına sebep olur. Ancak programların yüklenmesinde ve çalıştırılmasındaki düşük bellek kullanımı bu sorunu ortadan kaldırabilir.

CISC (Complex Instruction Set Computer)

CISC Mantığı Mikrokod

RISC (Reduced Instruction Set Computer)

! RISC ve CISC işlemciler birbirleri ile hız, komut işleme tekniği, kullanılan komut yapısı ve transistor sayılarına (donanım yapısına) göre karşılaştırılabilirler.

! Hız; İki işlemci mimarisi arasındaki hız farkı, kullanılan komut işleme teknikleri sonucu oluşur. CISC işlemcilerde 'kademeli komut işleme' tekniği kullanılırken, RISC işlemcilerde 'kanal komut işleme tekniği' (pipeline) kullanılır. CISC tekniği ile aynı anda tek bir komut işlenebildiği ve komutun, işlenmesi bitmeden yeni bir komut üzerinde çalışmaya başlanamaz. RISC tekniğinde ise, aynı anda çok sayıda komut işlenmektedir. Komutların birbirini takip etmesi nedeni ile her bir komut bir birim uzunluktadır ve her işlem adımında bir komuta ait işlemler bitirilir. RISC işlemciler, genellikle aynı saat frekansında çalışan CISC işlemcilere göre daha hızlıdır.

! Transistor sayısı; CISC işlemcilerde kullanılan transistor sayısı, RISC işlemcilere göre daha fazladır. Daha fazla sayıda transistor kullanılması, daha geniş alan gereksinimi ve daha fazla ısı ortaya çıkarır, oluşan daha fazla ısı nedeniyle soğutma ihtiyacı ortaya çıkar ve soğutma işlemi, ısı dağıtıcısı veya fanlar kullanılarak gerçekleştirilir.

! Tasarım; RISC işlemciler, CISC işlemcilere göre daha basit yapıda olduklarından daha kolay tasarlanırlar. ! Komut yapısı; RISC mimarisi, CİSC'in güçlü komutlarından yoksundur ve aynı işlemi yapmak için daha

fazla komuta gereksinim duyar. Sistemde güçlü komut eksikliği, ikinci bir yardımcı işlemci ya da ayrı bir 'pipeline‘ bölümü yardımı ile giderilebilir.

! RISC mimaride aynı uzunlukta basit komutlar kullanılırken CISC mimaride karmaşık yapıda değişken uzunlukta komutlar kullanılır.

RISC ve CISC mikro denetleyici mimarilerinin karşılaştırılması

! RISC mimarisinin yukarıdaki üstünlükleri yanında bazı mahsurları da bulunmaktadır. Sakıncalar olarak; daha fazla bellek kapasitesi gereksinimi ve güçlü komutlara sahip olunmaması sayılabilir. RISC mimarisi, CISC’in güçlü komutlarından yoksundur ve aynı işlemi yapmak için daha fazla komuta gereksinim duyar. Diğer bir deyişle, RISC mimarisinin sakıncası, CISC mimariye göre daha karmaşık yazılımlara gereksinim duymasıdır. Sistemde güçlü komut eksikliği, ikinci bir yardımcı işlemci yada ayrı bir ‘pipeline’ bölümü yardımı ile giderilebilir.

! Yarı iletken teknolojisindeki gelişmeler, CISC sisteminin az bellek gereksinimi ve basit program yazılımı gibi üstünlüklerin öneminin kaybolması sonucunu ortaya çıkarmakta ve RISC mimarisine daha önem kazandırmaktadır.

! Bu karsılaştırma sonucunda, 'hangi mikro denetleyici mimarisi tercih edilmelidir?' sorusunun tam olarak tek bir cevabı yoktur. Bu sorunun cevabı, tasarımcının hangi kriterleri önemsediği ile ilgidir. Bu kriterler; yonga alanı ve esnekliktir. Daha hızlı çalıştıklarından dolayı günümüzde çoğu mikro denetleyici ve işlemciler RISC mimarisi kullanmaktadırlar. Bununla beraber her iki mimarinin özelliklerini de ta ş ıyan karma mimariler de söz konusudur.

RISC ve CISC mikro denetleyici mimarilerinin karşılaştırılması (2)

Mikro İşlemciyi Oluşturan Birimler ve Görevleri

! İletişim hatları (iletim yolları), mikroişlemcilerden başlayarak bilgisayar devre bağlantılarını sağlayan iletkenlerdir. Bunlardan bir kısmı tek iletkenlerden oluşurken bir kısmı ise taraklı kablo veya baskı devre şeklindeki yan yana dizilmiş ve yalıtılmış çoklu iletkenlerden oluşmuştur.

1. Adres hatları (Adress Bus) 2. Bilgi hatları (Data Bus) 3. Kontrol hatları (Control Bus)

İletişim Hatları (Buses)

! ALU mikroişlemcide aritmetik ve mantık işlemlerinin yapıldığı en önemli birimlerden birisidir.

! Aritmetik işlemler denilince başta toplama, çıkarma, çarpma, bölme, mantık işlemleri denilince AND,OR, EXOR ve NOT gibi işlemler akla gelir. Komutlarla birlikte bu işlemleri mantık kapılarının oluşturduğu toplayıcılar, çıkarıcılar ve kaydıran kaydediciler gerçekleştirirler. ALU’da gerçekleşen bütün bu işlemler kontrol sinyalleri vasıtasıyla Zamanlama ve Kontrol Birimini gözetiminde eş zamanlı olarak yapılır.

ALU

Bellek

! Adres Hatları (Adress Bus): ! Adres hatları, mikroişlemci ile bellek (EPROM, RAM) ve giriş/çıkış (I/O)

kapıları arasındaki iletişimin, hangi bellek gözü veya giriş/çıkış kapısı ile yapılacağının belirlenmesini sağlayan bağlantı yollarıdır. Adres yolu iletken sayısı, mikroişlemcinin adresleyebileceği bellek gözü veya giriş/çıkış kapısı sayısını belirler. Adresleyebilme kapasitesi özellikle bellek kapasitesini belirler. Adres yolu tek yönlü çalışır. Ancak son gelişmelerin ürünü olan mikroişlemcilerde iki yönlü de yaralanılmaya başlanmıştır. Adres yolu ileteceği adres numarasını program sayıcısından almaktadır.

İletişim Hatları (Buses) Devam

! Bilgi Hatları (Data Bus) : ! Bilgi hatları (veri yolları), gerek bilgisayarın giriş birimlerinden

gelen ön bilgi ve komutların, gerekse işlemci içerisinde işlem görmekte olan ve işlem görmüş olan bilgilerin ve komutların iletildiği iletim yoludur. Bu nedenle veri yollarından iki yönlü çalışma için yaralanılır. İletken sayısı 4, 8, 16, 64 adet olabilmektedir. Mikroişlemcilerde, yukarıda da belirtildiği gibi genelde 7’li ASCII kodu kullanılmaktadır ve bunun için 8 iletkenli iletim yolu uygun bulunmaktadır. Eğer aynı anda çok karakter bitlerinin iletimi sağlanabilirse o oranda da bilgisayar çalışma hızı artmış olacaktır. Bu sebeple 8’in katları şeklindeki 16, 32, 6 bitlik veri yolları ve çalışma sistemleri geliştirilmiştir. He mikroişlemciyi dıştaki devrelere bağlayan veri yolları mikroişlemci içerisinde de devam etmektedir. Ayrıca mikroişlemci içerisinde yoğun biçimde bulunan veri yolları İÇ v DIŞ veri yolları olmak üzere ikiye ayrılır.

İletişim Hatları (Buses) Devam

! İç Bilgi Hatları : ! Mikroişlemci içerisinde bir ana bilgi hattı boydan boya uzanmakta ve devre

birimlerine ait bilgi hatları da bu ana hatta bağlanmaktadır. Bu bilgi hatlarının çoğunluğu, bağlantılarında giriş ve çıkış olarak işlem yapmaktadır. Ancak Aritmetik İşlem Ünitesi (ALU)’nde olduğu gibi bazı devrelerde de bir yönden gidip öbür yönden çıkmaktadır.

! 5 Prensip olarak bilgi hatları iki yönlü iletim yapan yollardır. Yalnızca komut kaydediciye gelen bilgi hattı tek yönlü olup bütün komutlar buraya gelerek kod çözücüde yorumlandıktan sonra, kontrol devresine ulaşmakta ve kontrol devresi buna göre belirli iletim yolarını kapayarak bilgisayarın çalışmasını yönlendirmektedir. Ana bilgi hattından devrelerin yararlanması sıra ile olmaktadır. Gelen bilgilerin hangi devreden ana bilgi hattına bilgi çıkışı yapabileceği, anahtar ve üç durumlu kapı devreleri tarafından belirlenmektedir. Bunların çalışmaları kontrol devreleri tarafından yönetilmektedir.

! Dış Bilgi Hatları : ! Dış bilgi hatları, mikroişlemci ile bellek ve giriş-çıkış (I/O) kapıları arasındaki veri ve

komut iletimini sağlayan iletim hatlarıdır. Ayrıca çevre birimleri ile bilgisayar arasındaki bağlantıları sağlayan iletim hatları da dış bilgi hattının bir bölümünü oluşturur.

İletişim Hatları (Buses) Devam

! Kontrol Hatları (Control Bus) : ! Kontrol hatları, mikroişlemcinin kontrol devresinden çıkarak gerek

mikroişlemci içerisindeki devrelere, gerekse de bilgisayar içerisindeki devrelere bir ağ gibi dağılır. Bilgisayar çevre birimlerinin işleme başlaması ve bitiminin sağlanması için kullanılır. Bütün bu sistemi çalışması, kontrol hatlarından iletilen saat (clock) darbeleri ile yönetildiğiiçin bunlarda iç ve dış olarak bir ayrıma gerek kalmamaktadır. Bir toplama, çıkarma veya kayma işleminin doğru yapılabilmesi için giriş sinyalleri sırasının doğru olması gerekir . Bu doğru luğu kontrol devres sağlamaktadır. Aynı şekilde bellek işlem görecek değerlerin alınması ve sonuç bilgilerinin belleğe depolanması da kontro sistemi aracılığı ile gerçekleşmektedir. Mikroişlemci iç devresindeki kontrol işlemi doğrudan gerçekleşmektedir. Yani kontrol yolu ile adres yolunun eş zamanlı çalışması gibi bir durum yoktur.

İletişim Hatları (Buses) Devam

! Mikroişlemcinin içinde işlem yaparken geçici olarak işlenecek veya işlenmiş bilgilerin kayıt edildikleri saklayıcılardır. Mikroişlemci içerisinde değişik işlemleri gerçekleştirmek için farklı kaydediciler bulunur. İşlem veya işlemler yapılırken bu kaydedicilere veri atılabilir, toplama, karşılaştırma ve kaydırma gibi bazı işlemler gerçekleştirilebilir.

! Register’lar, CPU içerisinde bulunduklarından dolayı, hafıza bloğuna göre oldukça hızlıdırlar.

! Hafıza bloğuna erişim için sistem veri yollarının kullanılması gereklidir. ! Register’daki verilerin ulaGılması için çok çok küçük bir zaman dilimi yeterli

olur. ! Bu sebeple, değişkenlerin, register’larda tutulmasına çalışılmalıdır. ! Register grupları genellikle oldukça kısıtlıdır ve çoğu register’ın önceden

tanımlanmış görevleri bulunur. Bu nedende, kullanımları çok sınırlıdır. Ancak, yine de hesaplamalar için geçici hafıza birimi olarak kullanılmak için en ideal birimlerdir.

Kaydediciler (Registers)

Register Tipleri : 1. Genel Amaçlı Register’lar 2. Segment Register’ları 3. Index ve Pointer Register’lar

! Genel amaçlı kayıtçıların görevi, işlemcinin üzerinde çalıştığı verileri geçici olarak saklamaktır. Kaydedicilerle 8 bitlik işlem yapılacağı zaman düşük değerlikli kaydediciler için AL, BL, CL, DL, yüksek değerlikli kaydediciler için ise AH, BH, CH, DH gösterimleri kullanılmaktadır. 16 bitlik işlem yapılacağı zaman ise AX, BX, CX, DX gösterimleri kullanılır. AX, BX, CX ve DX kayıtçıları AH, BH, CH, DH ve AL, BL, CL, DL kayıtçılarının birleştirilmiş durumlarıdır.

Genel Amaçlı Registerler

! AX - accumulator register – akümülatör (AH / AL). ! BX - the base address register – adres baGlangıcı (BH / BL). ! CX - the count register – sayma (CH / CL). ! DX - the data register – veri (DH / DL).

Genel Amaçlı RegisterlerDevam

Yukarıdaki register’ların tamamı 16-bitliktir. • 4 genel amaçlı register (AX, BX, CX, DX), iki 8-bitlik register olarak kullanılabilir. Örneğin eğer AX=3A39h ise, bu durumda AH=3Ah ve AL=39h olur.8-bitlik register’ları değiGtirdiğiniz zaman, 16-bitlik register’lar da değişmiş olur.

Genel Amaçlı RegisterlerDevam

! Akümülatörler (ACC ya da A olarak da tanımlanabilir), bilgisayarın aritmetik ve mantık işlemleri sırasında depo görevi yapan önemli bir kaydedicidir. Eğer kaydediciler bir sistemde sekreterya olara düşünülürse akümülatör bu sistemde baş sekrete olarak yerini alır.

! Ara değerlerin üzerinde tutulması, sisteme gelen verinin ilk alındığı yer, belleğe veya dış dünyaya gönderilecek verilerin tutulduğu yer olarak görev yapar. Bu yüzden, işlemcinin A kaydedicisin hedefleyen komutları çoktur. Bazı işlemcilerde B kaydedicisi de yardımcı akümülatör olarak kullanılır.

Kaydediciler (Registers) Akümülatörler

Ø Yığın gösterici kaydedici (Stack Pointer Register - SP) : ! Alt programa sapma ve kesme işlemlerinde dönüş adreslerini tutar.

Ø Ana gösterici kaydedici (Base Pointer Register - BP) : ! Veri dizilerinin adreslerini tutmakta kullanılır. Ø Kaynak indeks kaydedici (Source Index Register - SI) : ! Kaynak operandın adresini gösterir. Ø Yazılım indeks kaydedici (Destination Index Register - DI) :

! Hedef operandın adresini gösterir.

Index ve Pointer Register

Index ve Pointer Register(Devam)

Program Counter Çalışma Şekli

! RAM belleğin herhangi bir bölümü yığın olarak kullanılabilir. Yığın mikro işlemcinin kullandığı geçici bellek bölgesi olarak tanımlanır. Yığın işaretçisi, yığının adresini tutan özel amaçlı bir kaydedicidir. SP adres bilgisi göstereceği için 16-bit uzunluğundadır.

! Bu kaydediciye programın başında yığının başlangıç adresi otomatik olarak atanır. İşlemci tarafından yığının başlangıç adresi SP’ye yüklendikten sonra artık belleğin bu bölgesi depo benzeri bir görev yürütür. Yığına veri girişi yapıldıkça yığın göstericisinin değeri de yapısına gore değişir adır.

Yığın İşaretçisi (SP)

! Yığına her veri girişinde yığın göstericisinin değeri bir azalmakta, yığından her veri çekildiğin de ise yığın göstericisinin değeri otomatik olarak bir artmaktadır. Yığına gönderilen veri yığın göstericisinin işaret ettiği adresteki bellek hücresine yazılır. Yığından veri çekilirse yığın göstericisi bir önceki verinin adresine işaret edecek şekilde bir azalacaktır. Mikro işlemci işlediği ana programdan alt programa dallandığında veya bir kesme sinyali ile kesme hizmet programına dallandığında mevcu kaydedicilerin içeriklerini ve dönüş adresini saklayabilmekiçin otomatik olarak verileri ve adresleri yığına atar. Alt programdan veya kesme hizmet programından ana programa geri dönülmesi durumunda ana programda kaldığı yerin adresini ve kaydedicilerdeki verileri kaybetmemiş olur.

Yığın İşaretçisi (SP)Devam

! İndis Kaydedicileri : ! X ve Y olarak tanımlanan indis kaydedicilerinin temelde üç görevi

vardır. Hesaplamlarda ara değerlerin geçici tutulmasında, program döngülerinde ve zamanlama uygulamalarında bir sayıcı olarak ve bellekte depolanmış bir diz verinin üzerinde bir indisçi olarak kullanılmaktadır. Bazı işlemcilerde sadece tek indisçi olabilir.

! Program Sayıcı (PC) : ! Mikro işlemcinin yürütmekte olduğu program komutlarının adres

bilgisini tuttuğu özel amaçlı bir kaydedicidir. Bilindiği gibi bir programı oluşturan komutlar ve veriler normal bellekte saklıdır. Bilgisayarı çalışması sırasında hangi komutun hangi sırada kullanılacağını bilinmesi gerekir. Bu görevi program sayıcı (PC) yerine getirir. Program sayıcının bit genişliği adres yolu genişliği kadardır. Eğer işlemcinin 16-bit adres hattı var ise PC=16 bit işlemcinin 32-bit adres hattı var ise PC=32 bit büyüklüğünd olur.

İndis Kaydedici ve Program Sayacı

! Segment Kaydediciler ! 1 MB’lık hafızaya sahip olan mikroişlemcinin hafıza alanı 64 KB’lık segmentlere

bölünür. Her bir segmentin adresi birbirinden farklıdır. Bölünmüş olan hafızadan elde edilen bu segmentlerin dört tanesi bir anda aktiftir. Aktif olan segmentler aşağıda verildiği gibidir.

! Ø Code Segment(CS): Program kodlarının bulunduğu segmentin başlangıç ! adresini tutar. Genel amaçlı saklayıcılardan birinin tuttuğu ofset adresi ile ! birlikte verinin bulunduğu hücrenin gerçek adresini verir. ! Ø Stack Segment (SS): Yığın için belirlenen bellek adresinin başlangıç adresini ! tutar. ! Ø Data Segment (DS): Verilerin bulunduğu segmentin başlangıç adresini tutar. ! Ø Extra Segment(ES): Veri kaydedilen diğer bir segmentin başlangıç adresini ! saklar. Bu segmentlerden ilk ikisi program parçacıklarını yeri geldiğinde kullanmak

üzere yığın yapmak için son ikisi ise bilgi depolamak için kullanılır.

Segment Kaydedicileri

! Segment register’ları, genel amaçlı register’ları ile birlikte çalıGarak hafızada herhangi bir bölgeyi işaretleyebilir. Örneğin, fiziksel adres 12345h (heksadesimal) işaretlenmesi isteniyor ise,

DS =1230h ve SI = 0045h olmalıdır. ! CPU, segment register’ı 10h ile çarpar ve genel amaçlı register’da bulunan değeri de ilave eder. (1230h×10h + 45h = 12345h).

! 2 register tarafından oluşturulmuş olan adrese, effective address (efektif adres) ismi verilir. BX, SI ve DI register’ları, DS ile birlikte çalışır; BP ve SP register’ları ise SS ile birlikte çalışır.

Segment Kaydedicileri Devam

! Durum kaydedicisi 8-bitlik bir kaydedicidir. Bu kaydedicinin her bir biti ayrı ayrı anlam ifade eder. Mikro işlemci içinde veya dışardan yapılan herhangi aritmetiksel, mantıksal veya kesmelerle ilgili işlemlerin sonucuna göre bu bitler değer değiştirir. Bir işlem sonucunda bu bitlerin aldığı değere göre program yön bulur. Programcı bu bitlerde oluşacak değerlere göre programa yön verebilir. Aşağıdaki Şekil 6502 işlemcisine aittir.

Durum Kaydedicisi (Bayraklar)

! Carry (elde bayrağı-C): Elde / borç bayrağıdır. 8-bitlik bir işlem sonucunda dokuzuncu bit ortaya çıkıyorsa elde var demektir. Bu durumda C bayrağı mantıksal 1 olur. Bu bayrak biti programcı tarafından kurulur ya da silinebilir (CLC, SEC). Ayrıca bazı komutlar tarafından test edilebilir (BCC, BCS).

! Zero (sıfır bayrağı-Z): Sıfır bayrağı, aritmetik ve mantık işlemi sonucunda kaydedici içeriği sıfır ise Z = 1’e kurulur. Aksi durumda sıfırlanır (Z = 0).

! Interrupt disable (kesme yetkisizleştirme bayrağı-I): Mikro işlemci normal durumda komutları işlerken bir kesme (IRQ) geldiğinde bu kesme bu bayrak biti ile engellenebilir. Eğer bu bit komutlar (SEI) mantıksal 1 yapılırsa gelen kesmeler göz önüne alınmaz. Ancak bu bayrak mantıksal 0 olduğunda kesme dikkate alınır ve kesme hizmet yordamına dalınır. Yani bu bayrak biti, normal işleyiş sırasında bir kesme geldiğinde kabul edilip edilmeyeceğini belirler. Programcı bunu komutla yapar. NMI kesmesi bu bayrak için kullanılmaz.

! Decimal (ondalık bayrağı-D): Bu bayrak 1 olduğunda aritmetik işlemler BCD modunda yapılırken 0 olduğunda ikilik modta yapılır. Bu işlem eğitim ve uygulama açısında programcıya büyük kolaylıklar sağlar.

Durum Kaydedicisi (Bayraklar) Devam

! Overflow (taşma bayrağı-V): Bu bayrak aritmetik işlemlerde, eğer işlem +127 ile -128 aralığını geçiyorsa bir taşma meydana gelir ve V bayrağı 1 olur. Diğer yandan yine benzer işlemlerde eğer pozitif bir sayı ile negatif bir sayı üzerinde işlem yapılıyorsa ve sonuç pozitif çıkması gerekiyorken negatif çıktıysa bu bayrak 1 olur. Taşma bayrağı işaretli sayılarla işlem yapılırken devreye girer.

! Negative (negatif bayrağı-N): 8-bitlik bir işlemcide 7.bit MSB biti olarak bilinir. Eğer MSB biti bir işlem sonucunda 1 ise N bayrağı 1’e kurulur. Eğer MSB biti 0 ise kaydedicisideki değer pozitif demektir ki N bayrağı 0 olur. Bayraklardaki 4. bit B (Break) olarak tanımlanmış olup program durduğunda otomatik olarak1 olur. 5. bit ileride kullanılmak üzere boş (+5V) bırakılmıştır.Farklı mikro işlemcilerde birbirine benzer bayraklar olmasına rağmen faklı bayraklarda olabilir

Durum Kaydedicisi (Bayraklar) Devam

! İşaret bayrağı (SF): Aritmetik işlem sonucu pozitif bir değer ise SF Lojik "0",aksi durumda Lojik "1" olur.

! Taşma bayrağı (OF): İşlem sırasında limit dışında bir sonuç oluşursa OF Lojik "1", tersi durumunda ise Lojik "0" olur.

! Trap bayrağı (TF): TF Lojik "1" olduğunda işlemci aynı anda sadece tek işlem yapabilir.

! Kesme bayrağı (IF): INT ucunda bir kesme olduğu, IF Lojik "1" olduğu zaman dikkate alınır.

! Yön bayrağı (DF): Hangi komutun işleneceği bu komutla belirlenir

Durum Kaydedicisi (Bayraklar) Devam

Yığın İşaretçisi (SP)Devam

Mikroişlemci Registerler

! CPU’nun bir komutu yürütmeden önce, bu komutu bellekten getirmesi gerekir. ! Program Counter (PC), bellekte yürütülecek bir sonraki komutun adresini içerir. ! Komutun getirilmesi için PC’nin içeriği Memory Address Register (MAR)’e aktarılır.

[MAR]![PC] Ardından PC’nin içeriği bir arttırılır. [PC]! [PC+1]

! MAR, yazma çevrimi veya okuma çevrimi sırasından üzerinde işlem yapılacak bellek konumunun adresini barındırır.

! Bu aşamada MAR aynı zamanda , PC’nin artımdan bir önceki içeriğini yansıtır.Okuma çevrimi gerçekleştirildiğinde MAR ile belirlenmişolan bellek konumunun içeriği okunup içeriği MBR(Memory Buffer Register’e) aktarılır.

! [MBR]! [ M( [MAR] ) ]MBR okuma çevrimi sırasında bellekten okunan verilerin geçici olarak tutulduğu; yazma çevrimi sırasında da belleğe yazılacak verilerin geçici olarak tutulduğu bir saklayıcıdır. MBR’nin içeriği daha sonra IR (Instruction Register) olarak adlandırılan saklayıcıya aktarılır.

Fetch

! Assembly programlama dili düşük seviyeli bir dil olup C, C++, Pascal, Basic gibi yüksek seviyeli programlama dillerine göre anlaşılması biraz daha zordur. Assembly dili ile program yazarken kullanılan bilgisayarın donanım özellikleri programcı için önemlidir. Yazılan kodlar çoğunlukla donanıma bağlı yazılır ki bu da programın taşınabilirliğini azaltan bir faktördür.

! Assembly dili ile program yazarken programcı doğrudan bilgisayarın işlemcisi ve hafızası ile uğraşır. Yani hafızadaki ( RAM’deki ) ve işlemci gözlerindeki değerleri doğrudan değiştirme olanağı vardır.

! Yüksek seviyeli dillerdeki derleyicilerden farklı olarak, assembly kaynak dosyalarını çalışabilir dosya haline getirebilmek için “assembler” ve “linker” adı verilen programlar kullanılır. Aslında derleyiciler de bir tür assembler programıdır denebilir. Fakat derleyiciler, ekstra bir parametre kullanılmadığı taktirde, kaynak dosyasını önce gerekli Object dosyasına çeviriler daha sonra, bir hata ile karşılaşılmaz ise, elde edilen object dosyası linker yardımı ile çalışabilir dosya haline getirilir.

! Bilgisayarımızda çalıştırılan tüm programlar önce bilgisayarımızın RAM’ine yüklenir. Daha sonra RAM üzerinde çalıştırma işlemi gerçekleştirilir. RAM’e yüklenen bilgi programımızın makine dili karşılığından başka bir şey değildir. Makine dilinin kullanıcı tarafından anlaşılabilir şekline ise assembly dili demek pek yanlış olmaz.

Assembly

! Aslında assembly programlarının en önemli özellikleri boyutlarının yüksek seviyeli bir dil ile yazılan programlara nazaran çok küçük olması ve buna bağlı olarak çok daha hızlı çalışmalarıdır.

! Programların hızlı çalışmaların kodlarını sadeliğinden kaynaklanmaktadır. Faka günümüzde kullanılan yüksek hızlı işlemciler ve büyük kapasitelere sahip sabit diskler assembly programlarının bu özelliklerini önemsiz kılmaktadır.

AssemblyDevam

! Assembly dilinde program yazmak içi mikroişlemci iç yapısı bilinmesi gerekir.

! Assembly dili mikroişlemci tipine göre değişir. Bir mikroişlemci için yazılan bir program başka b i r mikro işl emc ide ça l ışmayab i l i r . P rogram taşı nab i l i r platformdan bağımsız değildir. Assembly dilinde program yazmak yüksek seviyeli dillere göre daha zor ve zaman alıcıdır.

! Bilgisayar donanımı üzerinde daha iyi bir denetim sağlar. İşlemcinizin gücünü en iyi şe k i l d e o r t a y a k o y a b i l e c e k t e k programlama dilidir.

! Küçük boyutlu bellekte az yer kaplayan programlar yazılabilir. Virüslerin yazımında kullanılırlar.

! Yazılan programlar daha hızlı çalışır. Çok hızlı çalıştıkları için işletim sistemlerinde k e r n e l v e donan ım sü r ü c ü l e r i n i n programlanmasında, hız gerektiren kritik uygulamalarda kullanılmaktadır. Herhangi bir programlama dili altında, o dilin kodları arasında kullanılabilir.

! İyi öğrenildiğinde diğer dillerde karşılaşılan büyük problemlerin assembly ile basit çözümleri olduğu görülür.

Assembly Dili Dezavantajları ve Avantajları

Assembly Program Yazma! Assembly dilinde program yazmak için Windows altında yer alan note pad, word pad gibi herhangi bir text editör kullanılabilir. Text editör yardımı ile Assembly dilinde program yazılır. Yazılan program TASM veya MASM assembler çevirici programları yardımı ile .obj uzantılı olarak makine diline çevrilir. Bu halde elde edilen program işletim sisteminin anladıgı bir formatta değildir. TLINK bağlayıcı programı kullanılarak .exe veya .com uzantılı hale dönüştürülür. Bu haldeki program işletim sistemi üzerinde ismi yazılarak DOS ortamında çalıştırılabilir.

Yorumlar / Açıklamalar ! Açıklamalar program satırlarının baĢına noktalı virgül konularak yapılır. Açıklama satırları assembler tarafından dikkate alınmaz.

! Program içinde daha detaylı bilgi vermek, kullanılan komutları izah etmek için kullanılır.

! Örnek: ; MOV ES,AX bu komut dikkat alınmaz

; AL ye SAYI1 değerini at

Assembly Program Yazma

Etiketler ! Et iket ler program iç inde kul lan ı lan öze l kelimelerdir. Sonuna “:” konularak kelimenin etiket olduğu anlaşılır. Etiketlerden program akışını belirli bir noktaya yönlendirmek istediğimizde yararlanırız.

! Örnek: Son:

Basla: JMP ANA Burada Son, Basla kelimeleri etikettir.

Assembly Program Yazma

Veri tanımlama : ! Veri tanımlama talimatları DB, DW, DD,DF, DQ, DT ve DUP dur.

DB (Define Byte): 1 Byte‟lık veri tanımlanır. DW (Define Word):2 Byte‟lık veri tanımlanır.

DD (Define double word):: 4 Byte‟lık veri tanımlanır. DF (Define Far Word): 6 Byte‟lık veri tanımlanır.

DQ (Define Quad Word): 8 Byte‟lık veri tanımlanır. DT (Define Ten Byte): 10 Byte‟lık veri tanımlanır.

DUP: Duplicate SAYI 3 DUP(0); Bellekten SAYI değiĢkeni için 3 byte‟lık yer

ayır, içini 0 ile doldur. SAYI DW 10 DUP(5) Bellekten SAYI değiĢkeni için 10x2

byte‟lık yer ayır, içlerini 5 ile doldur.

Assembly Program Yazma

! String verileri tanımlama YAZI DB „KARABUK‟

YAZI DB „K‟,‟A‟,‟R‟,‟A‟,‟B‟,‟U‟,‟K‟ Dizi Tanımlama

DIZI DB 2, 4, 0, -5, 7 DIZI DB 12, 0FH, 01001001B

! Sayıların sonunda B olması verinin ikilik sistemde olduğunu, H olması verinin hexadesimal olduğunu gösterir. Bir şey yazılmamışsa veri onluk sistemde yazılmış anlamına gelir.

Tanımlama

AssemblyÖrnek

! 1) Veri taşıma Komutları : : mov, lea, les , push, pop, pushf, popf

! 2) Dönüştürme Komutları : cbw, cwd, xlat

! 3) Aritmetik Komutlar : add, inc sub, dec, cmp, neg, mul, imul, div, idiv

! 4) Mantıksal, kaydırma, çevirme ve bitsel işlemler için komutlar and, or, xor, not, shl, shr, rcl, rcr

! 5) I/O (Giriş/Çıkış) Komutları : in, out

! 6) Karakter dizi (String) Komutları : movs, stos, lods

! 7) Program akış kontrol Komutları jmp, call, ret, Jxx (şartlı dallanma komutlar)

! 8) Diğer komutlar : clc, stc, cmc

80x86 Temel Assembly Komutları

mov reg, reg mov mem, reg mov reg, mem

mov mem, immediate data mov reg, immediate data

mov ax/al, mem mov mem, ax/al

mov segreg, mem16 mov segreg, reg16 mov mem16, segreg mov reg16, segreg mov mem,mem yanlış

Veri Taşıma Komutları MOV Komutu

MOV hedef,kaynak ! MOV komutunun kullanım şekli yukarıdaki gibidir. Bu komut “kaynak” içerisindeki bilgiyi “hedef”e aktarır. Yani

MOV AX, 1234h MOV BX, AX

! Yukarıda ilk önce AX register’ına 1234h değeri yaz ı lm ışt ı r . Daha sonra bu değer AX register’ından BX register’ına aktarılmıştır. Yani Program sonunda AX=1234h ve BX=1234h olur.

Mov Komutu

!  MOV  sayi1, sayi2         ;yanlış kullanım  MOV        AX, sayi1 MOV        sayi2, AX

Assembly

Adresleme Modları

! İvedi Adresleme :

! Direkt Adresleme :

Adresleme Modları

! Dolaylı Adresleme :

Adresleme Modları

ADD ve ADC Komutları

INC Komutu

! int 20; " Programı Sonlandırır. ! int 21

INT İşlevleri

XCHG ve LEA

Şartlı Dallanmalar 1

Şartlı Dallanmalar 2

Şartlı Dallanmalar 3