Yığın MİKROİŞLEMCİ SİSTEMLERİ. Yığın. Örnek MİB için Yığın. Yığma İşlemi. Çekme İşlemi

Benzer belgeler
İşlem Buyrukları MİKROİŞLEMCİ SİSTEMLERİ. İşlem Buyrukları. İşlem Buyrukları. İşlem Buyrukları. İşlem Buyrukları

Merkezi İşlem Birimi MİKROİŞLEMCİ SİSTEMLERİ. MİB Yapısı. MİB Altbirimleri. Durum Kütüğü. Yardımcı Kütükler

Merkezi İşlem Birimi MİKROİŞLEMCİ SİSTEMLERİ. MİB Yapısı. MİB in İç Yapısı. MİB Altbirimleri. MİB in İç Yapısı

Adresleme Yöntemleri MİKROİŞLEMCİ SİSTEMLERİ. İşlenenin Yeri. Örnek MİB Buyruk Yapısı. İvedi Adresleme. Adresleme Yöntemleri. Bellek. Kütükler.

Adresleme Yöntemleri MİKROİŞLEMCİ SİSTEMLERİ. Örnek MİB ile Adresleme. Adresleme Yöntemleri. Doğal Adresleme. İvedi Adresleme

TBİL-405 Mikroişlemci Sistemleri Bölüm 2 1- % %01010 işleminin sonucu hangisidir? % %11000 %10001 %10101 %00011

MİKROBİLGİSAYAR SİSTEMLERİ VE ASSEMBLER

2011 Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

Bilgisayar Yapısı MİKROİŞLEMCİ SİSTEMLERİ. Bilgisayar Temel Birimleri. MİB Yapısı. Kütükler. Kütükler

Bilgisayar Yapısı MİKROİŞLEMCİ SİSTEMLERİ. Bilgisayar Temel Birimleri. Kütükler. Kütükler. Merkezi İşlem Biriminin İç Yapısı

MİKROİŞLEMCİ SİSTEMLERİ

BÖLÜM 7 Kesmeler.

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

DERS 12 PIC 16F84 ile KESME (INTERRUPT) KULLANIMI İÇERİK

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

DERS 7 PIC 16F84 PROGRAMLAMA İÇERİK. PIC 16F84 örnek programlar Dallanma komutları Sonsuz döngü

Bilgisayar İşletim Sistemleri BLG 312

Giriş/Çıkış Arabirimi MİKROİŞLEMCİ SİSTEMLERİ. Giriş/Çıkış Adresleri. MİB ve G/Ç Arabirimi. Asenkron Veri Aktarımı. MİB ve Çevre Birimleri Bağlantısı

Şekil. 64 Kelimelik Yığıtın Blok Şeması

7- Turbo Pascal Programlamada Alt Programlar (Procedure)

Adresleme Modları. Mikroişlemciler ve Mikrobilgisayarlar

DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ. İçerik

Giriş MİKROİŞLEMCİ SİSTEMLERİ. Elektronik Öncesi Kuşak. Bilgisayar Tarihi. Elektronik Kuşak. Elektronik Kuşak. Bilgisayar teknolojisindeki gelişme

void setup() fonksiyonu: Bu fonksiyon program ilk açıldığında bir kere çalışır ve gerekli kalibrasyon, setup komutlarını buraya yazarız.

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

Giriş/Çıkış Arabirimi MİKROİŞLEMCİ SİSTEMLERİ. Arabirim Özellikleri. Giriş/Çıkış Adresleri. G/Ç Arabirimlerinin Bağlanması

Bölüm 9. Altprogramlar ISBN

İLERI MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

if (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

MİKROBİLGİSAYAR LABORATUVARI DENEY RAPORU

Yrd.Doç.Dr. Celal Murat KANDEMİR. Kodlama (Coding) : Bir nesneler kümesinin bir dizgi (bit dizisi) kümesi ile temsil edilmesidir.

NB Ekran Seri Port Üzerinden Veri Okuma/Yazma. Genel Bilgi Protokol Oluşturma Veri Okuma Veri Yazma

K uark projesi. Temel Özellikler :

4 ANALİZ VE MODELLEME

Bölüm 10. Altprogramların gerçeklenmesi ISBN

Fatura Dosyalarını Yükleme ile ilgili Detaylar. 14 Temmuz 2014

Yrd. Doç. Dr. Caner ÖZCAN

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

İ.T.Ü. Eğitim Mikrobilgisayarının Tanıtımı

Yrd. Doç. Dr. Caner ÖZCAN

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

Bilg.Mimarisi-I 4.HAFTA VERI AKTARIMI VE ISLEME. Bilgisayar buyrukları 3 kategoride sınıflandırılabilir.

MC6800. Veri yolu D3 A11. Adres yolu A7 A6 NMI HALT DBE +5V 1 2. adres onaltılık onluk bit 07FF kullanıcının program alanı

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

Özyineleme (Recursion)

Konular MİKROİŞLEMCİ SİSTEMLERİ. Giriş. Bilgisayar Tarihi. Elektronik Kuşak. Elektronik Öncesi Kuşak

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

T.C. KOCAELİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLİŞİM SİSTEMLERİ MÜHENDİSLİĞİ

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)

EGE ÜNİVERSİTESİ EGE MYO MEKATRONİK PROGRAMI

HSancak Nesne Tabanlı Programlama I Ders Notları

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir:

ALGORİTMA VE PROGRAMLAMA II

Proses. Prosesler 2. İşletim Sistemleri

BM-311 Bilgisayar Mimarisi

9. MERKEZİ İŞLEM BİRİM MODÜLÜ TASARIMI

PROSESLER. Proses. Proses

8. İŞARETCİLER (POINTERS)

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

Mikroişlemcili Sistemler ve Laboratuvarı 8.Hafta

Sistem Programlama. Kesmeler(Interrupts): Kesme mikro işlemcinin üzerinde çalıştığı koda ara vererek başka bir kodu çalıştırması işlemidir.

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Göstericiler (Pointers)

C Dersi Bölüm 1. Bilgisayar Donanımı

Pointer Kavramı. Veri Yapıları

ASENKRON (Eş Zamanlı Olmayan) HABERLEŞME ARA YÜZEYİ

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

MĐKROĐŞLEMCĐLĐ FONKSĐYON ÜRETECĐ

MATLAB İLE PROGRAMLAMAYA GİRİŞ. Nedim TUTKUN Elektrik Elektronik Mühendisliği Bölümü

DENEY-5. SABANCI ATL ÖĞRETMENLERİNDEN YAVUZ AYDIN ve UMUT MAYETİN'E VERDİKLERİ DESTEK İÇİN TEŞEKKÜR EDİYORUZ

Algoritmalar, Akış Şemaları ve O() Karmaşıklık Notasyonu

PHP I PHP I. E. Fatih Yetkin. 26 Eylül 2011

KOMUT TABLOSU İLE İLGİLİ AÇIKLAMALAR:

Mikrobilgisayar Donanımı

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

OSI REFERANS MODELI-II

Bitirme Ödevi Sunumu PLATFORM BAĞIMSIZ BENZETİM PROGRAMI. Danışman : Yrd.Doç.Dr. D Feza BUZLUCA Gökhan Akın ŞEKER

LCD (Liquid Crystal Display)

KONTROL VE OTOMASYON KULÜBÜ

EEM 419-Mikroişlemciler Güz 2017

BÖLÜM 3 3. PIC 16F8X KOMUTLARI 3.1.KULLANILAN SEMBOLLER: 3.2.KOMUTLAR VE KULLANIM ÖRNEKLERİ

DERS 5 PIC 16F84 PROGRAMLAMA İÇERİK. PIC 16F84 bacak bağlantıları PIC 16F84 bellek yapısı Program belleği RAM bellek Değişken kullanımı Komutlar

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

KASIRGA -4 Buyruk Tasarımı Belgesi Ankara

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

İl İlçe uygulaması. : Seçilen ile ait ilçeleri listeleyen program. //İl değişkeni için kodu aşağıdaki sayfadan kopyalayınız.

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.

Fonksiyonlar (Altprogram)

Prof. Dr. Doğan İbrahim Yakın Doğu Üniversitesi, Mühendislik Fakültesi, Biyomedikal Mühendisliği, Bölümü Tel:

Algoritma ve Programlamaya Giriş

EEM 306 Mikroişlemciler ve Lab. Doç.Dr. Mehmet SAĞBAŞ

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

Mikroişlemcili Sistemler ve Laboratuvarı

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

JZ TEST3 (7/3) 1 makine çevrimi süresi

Transkript:

Yığın MİKROİŞLEMCİ SİSTEMLERİ Yrd.Doç.Dr. Şule Öğüdücü Geçici olarak veri saklamak amacıyla kullanıcı tarafından bellek içinde ayrılmış bir alandır. Yığında en son saklanan veri yığından ilk olarak çekilir. (LIFO) Bellekte küçülen adreslere doğru büyür. Kullanıcı yığının dip adresini tanımlar. Yığın Yığın için bellekte yüksek adreslerden başlayarak yer ayrılması, yığın ve kullanıcı programlarının birbirini ezmesini önler. İki şekilde kullanılır Program içinde verileri saklamak YIĞ ve ÇEK buyrukları ile MİB tarafından altprogramlara ve kesme hizmet programlarına dallanırken dönüş adresini saklamak ve parametre aktarmak Program Yığın $0000 Örnek MİB için Yığın Örnek MİB de 6 bitlik bir yığın göstergesi () vardır. nin değeri yığının en üstündeki boş bellek gözünü işaret eder. MİB akümülatör içeriklerini yığına aktarılabilir, ya da yığının en üstündeki veri akümülatörlere çekilebilir. Yığın büyük adreslerden küçük adreslere doğru büyür. Genelde bellekteki en büyük adres yığın göstergesine yüklenir. Yığma İşlemi Çekme İşlemi Yığın bellek içinde istenen bir adresten başlayarak kurulur YÜK, Yığına yeni bir veri yazmak için Yığın göstergesinin gösterdiği bellek gözüne veri yazılır. <> Yığın göstergesi değeri bir azalır. - B Yığından bir veri çekmek için ÇEK B Yığın göstergesinin değeri bir artırılarak işlem yapılacak bellek gözünü işaret eder. + Yığın göstergesinin işaret ettiği bellek gözündeki veri alınır. B <> B

Yığın İşlemleri Yığma ve çekme işlemlerinde işlenenlerin sırası ters olmalıdır. ÇEK B ÇEK Eğer çekme işlemi yapmadan çok fazla yığma işlemi yapılırsa, yığın programları ve verileri ezer. Yığının üst adresini kontrol etmek gerekir. Örnek- Bellekte $00 adresinden başlayan elemanlı bir dizi var. Dizi aynı adresten başlayarak ters sırada saklanacaktır. BŞL YÜK,$2000 YÜK SK,$00 YÜK B,$0 GERI DEE ILERI YÜK,<SK+0> RT SK Sayı ZT B DL GERI ILERI YÜK SK,$00 YÜK B,$0 DONGU DEE SON ÇEK YZ,<SK+0> RT SK ZT B DL DONGU SON Sayı Sayı 2 Sayı ltprogram Program içinde tekrarlanan program parçaları altprogramlara dönüştürülür. Programın çeşitli yerlerinde aynı program kodunu yazmak yerine altprogram çağrılır. ynı işlem farklı parametrelerle yürütülebilir. sembler dilinde altprogram ana programın herhangi bir yerinde yer alabilir. Genellikle ana programdan farklı bir alanda yazılır. ltprogramı çağırmak için LT komutu kullanılır. ltprogramdan ana programa dönmek için komutu kullanılır. ltprogram için Kullanılan Buyruklar Örnek MİB de altprograma dallanmak ve altprogramdan dönmek için kullanılan buyruklar LTD DRES Verilen adresteki altprograma dallan. <> PS(düşük), - <> PS(yüksek), - PS DRES LT DIM dım miktarı kadar ötedeki altprograma dallan. <> PS(düşük), - <> PS(yüksek), - PS PS + DIM naprograma dön. +, PS(yüksek) +, PS(düşük) ltprogram na programda LT komutu görüldüğü zaman LT komutunu izleyen buyruğun adresi yığında saklanır. Program sayacı altprogramın başladığı adres ile yüklenir. N PROG. ltprogram ltprogramdan komutu ile ana programa dönülür. Yığının en üstünden ana programa dönüş adresi çekilir. Program sayacına ana programa dönüş adresi yüklenir. N PROG. $00 LT KOŞUL $0 $00 KOŞUL $ 0 PC=$ 00 0 $00 $0 $00 $0 LT KOŞUL KOŞUL PC=$0 0 2

ltprogram BSL PROG 2 $000 YÜK,# $0C LT PROG $00 LT PROG2 $0F $00D SON DUR 0 0D 0 2 F 0 F PROG2 $00 ltprograma gitmeden önce yığın göstergesine başlangıç değeri atamak gerekir. Eğer yığın göstergesine değer atanmazsa, dönüş adresi bellekte verilerin bulunduğu yere yazılabilir ya da yığın göstergesi değeri bellek bulunmayan bir adresi işaret ediyorsa anaprograma dönüş adresi saklanmaz. Örnek-2 Bir sayının mutlak değerini bulan altprogram. Sonuç CC üzerinden ana programa aktarılıyor. BŞL YÜK, YÜK,$9 YZ,<$00> YÜK,$7 YZ,<$0> LT MUTDEG YÜK,<$00> LT MUTDEG SON ---------------------------- MUTDEG SIN,$80 DEE BİTTİ EKS BITTI Değişkenlerin Taşınması ltprograma değişkenler kütükler üzerinden gönderilir. ltprograma gönderilmek istenen veriler akümülatör ve yardımcı kütüklere yüklenir. Sonuçlar akümülatör ve yardımcı kütükler üzerinden ana programa gönderilir. Bu iş için ayrılmış bellek gözleri kullanılarak değişkenler taşınır. na program değişkenleri bellekte ayrılan gözlere yazar, altprogram bu gözlerden değişkenleri okuyarak işlem yapar. Yığın göstergesi kullanılarak yapılır. lt programa gitmeden önce değişkenler yığına aktarılır. Başvuru ktarımı Değer ktarımı Başvuru ktarımıparametrelerin adresleri altprograma gönderilir. Değer ktarımı Parametrelerin değerleri altprograma gönderilir. Örnek-2 de değişkenlerin değerleri altprograma aktarılmıştır. Eğer değişkenlerin bulunduğu bellek gözlerinin adresi altprograma aktarılırsa, değişkenlerin değerleri değiştirilebilir. Örnek- Örnek-2 de değişkenlerin adresleri altprograma sıralama kütüğü üzerinden gönderiliyor. ltprogram sonucu değişkenin bulunduğu bellek gözüne yazıyor. BSL YÜK, YÜK,$9 YZ,<$00> YÜK,$7 YZ,<$0> YÜK SK,$0 LT MUTDEG YÜK SK,$00 Sıralama kütüğü üzerinden LT MUTDEG başvuru aktarımı SON ---------------------------------- MUTDEG YÜK,<SK+0> SIN,$80 DEE BITTI EKS YZ,<SK+0> BITTI ÇEK ltprogramlarda Yığın Kullanımı na programa dönüş adresini saklamak Parametre aktarımı na program değişken değerlerini yığına aktarır. ltprogram ve ana program yığın göstergesi değerini bilir. Kütük değerlerini korumak ltprogramlarda yerel değişken yaratmak

Örnek- Iki ikili sayıyı toplayan bir altprogram yazılacaktır. Parametreler yığın üzerinden değer aktarımı yöntemi ile aktarılacaktır. Örnek- Iki ikili sayıyı toplayan bir altprogram yazılacaktır. Parametreler yığın üzerinden değer aktarımı yöntemi ile aktarılacaktır. BŞL YÜK, YÜK,$9 YZ,<$00> YÜK,$7 YZ,<$0> LT TOPL YZ,<$0> SON TOPL YÜK,<+> TOP,<+> DR-H DR-L BŞL YÜK, YÜK,$9 YZ,<$00> YÜK,$7 YZ,<$0> LT TOPL YZ,<$0> SON TOPL YÜK,<+> TOP,<+> SYI-2 SYI-2 SYI- SYI- Örnek- Örnek- ltprograma değişkenlerin adresleri ve toplamın yazılacağı bellek gözünün adresi yığın üzerinden gönderiliyor. Değişkenler altprogramdan dönüldüğü zaman 0 değerini alıyor Başvuru ktarımı BŞL YÜK, YÜK,$9 YZ,<$00> YÜK SK,$00 KT B,SK YÜK,$7 YZ,<$0> YÜK,$0 YÜK,$ YÜK SK,$0 KT B,SK LT TOPSİL SON $FFF7 DR-H DR-L 0 0 00 TOPSİL KT SK, SİL B YÜK CD,<SK+09> YÜK,<CD> YZ B,<CD> YÜK CD,<SK+07> TOP,<CD> YZ B,<CD> YÜK CD,<SK+0> YZ,<CD> ÇEK B ÇEK $FFF B DR-H DR-L 0 0 00 0 2 6 7 8 9 Yerel Değişkenler Örnek-6 ltprogram kullandığı yerel değişkenler için yığında yer alır. Yığından yerel değişkenler için yer almak ve yığına geri vermek altprogramın görevidir. Örnek 6 bitlik bir sayının yüksek anlamlı ve düşük anlamlı bitlerinin yer değiştirmesi. C void swap(short int *number) { char temp; temp = *number; *number = *(number + ); *(number + ) = temp; } BŞL YÜK, YÜK SK,$00 KT B,SK YÜK,$ LT SWP SON 0 TEMP DR-H DR-L 00 2 6 SWP ZT *yerel değişken için yer alındı* KT SK, YÜK CD,<SK+0> *yüksek anlamlı 8 bitin adresi* YÜK,<CD> *CC <- yüksek anlamlı 8 bit* YZ,<SK+> *temp <- yüksek anlamlı 8 bit* RT CD *düşük anlamlı 8 bitin adresi* YÜK,<CD> *CC <- düşük anlamlı 8 bit* ZT CD YZ,<CD> *takas* YÜK,<SK+> *CC <- temp* RT CD YZ,<CD> *CC düşük anlamlı kısma aktarıldı* RT *yerel değişkenin yeri geri verildi* ÇEK

Dikkat!! YIĞ ve ÇEK işlemlerinde işlenenlerin ters sırada olması gerekir. YIĞ işlemi sayısı kadar ÇEK işlemi olması gerekir. ksi halde komutu ile yığından yanlış adres çekilir ve program çalışmasında hata oluşur. Döngü içinde YIĞ ve ÇEK işlemleri yapılmaması iyi olur. ltprogramdan komutu ile dönülmesi gerekir. acil durum işareti olarak görülebilir MİB, o an yapmakta olduğu işe en kısa sürede ara vererek gelen kesmeye cevap vermek üzere Hizmet programına gider. nin geldiği birime göre her birimin kendi Hizmet Programı vardır. Hizmet Programına Dallanma Maskelenemez MİB nin kesme girişine gelen kesmeye o anda yapmakta olduğu işe ara vererek cevap verir. Maskelenebilir MİB nin İsteği girişine gelen kesmeye durum kütüğündeki kesme maskesi bitinin değerine göre cevap verir ya da vermez. K= isteği engellenir. K=0 isteğine cevap verilir. lbaştan (Reset) Ilk açıldığı hale getirir. lbaştan İsteği Yalıtım Yalıtıldı Oku/Yaz Bel- Bekle Saat Girişi K T Saat Çıkışı Lojiği S N Y E dres Yolu Veri Yolu Hizmet programları bir altprogram gibi çalışır. MİB kesme hizmet programına gitmeden önce dönüş adresini (kütüklerin içeriklerini) yığında saklar. hizmet programından (K) komutu ile dönülür. hizmet programına iki şekilde dallanılır Başlangıç adresi doğrudan hizmet programının başlangıç adresi bellidir. Başlangıç adresi dolaylı hizmet programının başlangıç adresinin yazılacağı bellek gözleri bellidir. nin Donanım Yapısı Yoklama Yöntemi alındığında kesmenin nerden geldiğine iki şekilde karar verilebilir Yoklama yöntemi hizmet programına gidilerek kesme gelebilecek birimler sırayla sınanır. Uzun sürebilir. MİB +V Sıralıyıcı Bir kesme öncelik devresi ile kesmenin hangi birimden geldiği anlaşılır.

Sıralıyıcı +V MİB Veri Yolu Sıralıyıcı dres Yolu 6