BÖLÜM 4 BELLEK ADRESLEME VE EMÝR TÜRLERÝ



Benzer belgeler
EÞÝTSÝZLÝKLER. I. ve II. Dereceden Bir Bilinmeyenli Eþitsizlik. Polinomlarýn Çarpýmý ve Bölümü Bulunan Eþitsizlik

TEMEL KAVRAMLAR TEST / 1

DOÐAL SAYILAR ve SAYILARIN ÇÖZÜMLENMESÝ TEST / 1

8086 Mikroişlemcisi Komut Seti

Kanguru Matematik Türkiye 2017

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

Kanguru Matematik Türkiye 2018

BÖLÜM 2 MERKEZÝ ÝÞLEM BÝRÝMÝ (CPU)

BÝREY DERSHANELERÝ SINIF ÝÇÝ DERS ANLATIM FÖYÜ MATEMATÝK

Bölüm 6: Lojik Denklemlerin Sadeleþtirilmesi

Kanguru Matematik Türkiye 2015

Aþaðýdaki tablodaki sayýlarýn deðerlerini bulunuz. Deðeri 0 veya 1 olan sayýlarýn bulunduðu kutularý boyayýnýz. b. ( 3) 4, 3 2, ( 3) 3, ( 3) 0

Brain Q RSC/2 Termostat

Mikroişlemcili Sistemler ve Laboratuvarı 8.Hafta

Mantýk Kümeler I. MANTIK. rnek rnek rnek rnek rnek... 5 A. TANIM B. ÖNERME. 9. Sýnýf / Sayý.. 01

1. Böleni 13 olan bir bölme iþleminde kalanlarýn

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

Brain Q RSC/2 Termostat

Mad Q Kullaným Kýlavuzu

Ders 3 ADRESLEME MODLARI ve TEMEL KOMUTLAR

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

KÖÞE TEMÝZLEME MAKÝNASI ELEKTRONÝK KONTROL ÜNÝTESÝ KULLANIM KILAVUZU GENEL GÖRÜNÜM: ISLEM SECIMI FULL

Kanguru Matematik Türkiye 2017

Kanguru Matematik Türkiye 2015



Firmamýz mühendisliðinde imalatýný yaptýðýmýz endüstriyel tip mikro dozaj sistemleri ile Kimya,Maden,Gýda... gibi sektörlerde kullanýlan hafif, orta

A A A A) 2159 B) 2519 C) 2520 D) 5039 E) 10!-1 A)4 B)5 C)6 D)7 E)8. 4. x 1. ,...,x 10. , x 2. , x 3. sýfýrdan farklý reel sayýlar olmak üzere,

DENEME Bu testte 40 soru bulunmaktadýr. 2. Bu testteki sorular matematiksel iliþkilerden yararlanma gücünü ölçmeye yöneliktir.

MATEMATİK SORU BANKASI

/2006 TR(TR) Kullanýcý için. Kullanma talimatý. ModuLink 250 RF - Modülasyonlu kalorifer Kablosuz Oda Kumandasý C 5. am pm 10:41.

BÖLME ve BÖLÜNEBÝLME TEST / 6

Kümeler II. KÜMELER. Çözüm A. TANIM. rnek Çözüm B. KÜMELERÝN GÖSTERÝLMESÝ. rnek rnek rnek Sýnýf / Sayý..

DOÐRUNUN ANALÝTÝÐÝ - I

Adresleme Modları. Mikroişlemciler ve Mikrobilgisayarlar

3. Tabloya göre aþaðýdaki grafiklerden hangi- si çizilemez?

DOĞAL SAYILARLA İŞLEMLER

POLÝNOMLAR TEST / Aþaðýdakilerden hangisi polinom fonksiyonu deðildir?

BÝREY DERSHANELERÝ SINIF ÝÇÝ DERS ANLATIM FÖYÜ MATEMATÝK

Kanguru Matematik Türkiye 2017

BM-311 Bilgisayar Mimarisi

BÝREY DERSHANELERÝ SINIF ÝÇÝ DERS ANLATIM FÖYÜ MATEMATÝK

Kanguru Matematik Türkiye 2018

DERSHANELERÝ MATEMATÝK - I

Basým Yeri: Ceren Matbaacılık AŞ. Basým Tarihi: Haziran / ISBN Numarası: Sertifika No: 33674

3. Çarpýmlarý 24 olan iki sayýnýn toplamý 10 ise, oranlarý kaçtýr? AA BÖLÜM

YAZILIYA HAZIRLIK TESTLERÝ TEST / 1

5. 2x 2 4x + 16 ifadesinde kaç terim vardýr? 6. 4y 3 16y + 18 ifadesinin terimlerin katsayýlarý

OTOMATÝK O-RÝNG TAKMA. A.Turan GÜNEÞ. Makina Mühendisi

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

HAFIZA TEKNÝKLERÝ ile MATEMATÝK

1. BÖLÜM. 4. Bilgi: Bir üçgende, iki kenarýn uzunluklarý toplamý üçüncü kenardan büyük, farký ise üçüncü kenardan küçüktür.

BÖLÜM 3 FONKSÝYONLARIN LÝMÝTÝ. ~ Limitlerin Tanýmý ve Özellikleri. ~ Alýþtýrmalar 1. ~ Özel Tanýmlý Fonksiyonlarýn Limitleri

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

Mikrobilgisayar Mimarisi ve Programlama

Kanguru Matematik Türkiye 2017

BÝREY DERSHANELERÝ SINIF ÝÇÝ DERS ANLATIM FÖYÜ MATEMATÝK - II

EDMS, þirketlerin dinamik dokümanlar oluþturmasýný saðlayan, bu doküman ve belgeleri dijital olarak saklayýp, dünyanýn deðiþik noktalarýndaki

1. Bir yel deðirmen motoru þekildeki gibi 3 diþliden oluþuyor.

Bir motorun iç yapısı çok farklı gözükse bile, motorun uç davranışını bu iki türün birisi cinsinden tanımlamak her zaman mümkündür.

BÝREY DERSHANELERÝ SINIF ÝÇÝ DERS ANLATIM FÖYÜ MATEMATÝK - I

Mikroişlemcili Sistemler ve Laboratuvarı 6.Hafta

Kanguru Matematik Türkiye 2017

m3/saat AISI

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ı

Electronic Workbench 5.12 (EWB 5.12)

3.BÖLÜM - EKRAN TESTÝ - BÝREYSEL 10 DAKÝKA

Kanguru Matematik Türkiye 2017


MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

3. FASÝKÜL 1. FASÝKÜL 4. FASÝKÜL 2. FASÝKÜL 5. FASÝKÜL. 3. ÜNÝTE: ÇIKARMA ÝÞLEMÝ, AÇILAR VE ÞEKÝLLER Çýkarma Ýþlemi Zihinden Çýkarma

HATIRLAYALIM TAM SAYILAR

Bakým sigortasý - Sizin için bilgiler. Türkischsprachige Informationen zur Pflegeversicherung. Freie Hansestadt Bremen.

Kalite Güvence Sistemi Belgesi.... Sulamada dünya markasý.

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.

UIC-20-P ÖLÇÜ VE KONTROL CÝHAZI

DERSHANELERÝ MATEMATÝK

Geometriye Y olculuk. E Kare, Dikdörtgen ve Üçgen E Açýlar E Açýlarý Ölçme E E E E E. Çevremizdeki Geometri. Geometrik Þekilleri Ýnceleyelim

Kanguru Matematik Türkiye 2017

Kanguru Matematik Türkiye 2018

Kanguru Matematik Türkiye 2017

17 ÞUBAT kontrol

Modüler Proses Sistemleri

ÇEMBERÝN ANALÝTÝÐÝ - I

Görüntü Konumunu Ayarlama. DocuColor 242/252/260

K uark projesi. Temel Özellikler :

Soru 1. Çözüm. Soru 2. Çözüm Yýlý Sorularý ve Çözümleri. Cevap D. Cevap E. Tübitak Ulusal Bilgisayar Olimpiyatlarý

Firmamýz mühendisliðinde imalatýný yaptýðýmýz endüstriyel tip proses filtreleri ile, siklonlar, seperatörler çalýþma koþullarýna göre anti nem,anti

6. Büyük kan dolaþýmýnýn amacý nedir? Büyük kan dolaþýmýnda kanýn izlediði yolu kýsaca açýklayýnýz.

Ballorex Venturi. Çift Regülatörlü Vana

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

Mikrobilgisayar Mimarisi ve Programlama

8086 Mikroişlemcisi Komut Seti

3AH Vakum Devre-Kesicileri: Uygun Çözümler

PANEL RADYATÖRLERÝ MV 21 geprüfte Sicherheit

Kullaným kýlavuzu. Oda kumandasý RC. Genel. Oda sýcaklýðýnýn (manuel olarak) ayarlanmasý. Otomatik düþük gece ayarýnýn baþlatýlmasý

Alcatel OmniPCX Office

d es ý KÝTAGAMÝ Nasýl Yapýlýr

2 - Konuþmayý Yazýya Dökme

10. 4a5, 2b7 ve 1cd üç basamaklý sayýlardýr.

Transkript:

BÖLÜM 4 BELLEK ADRESLEME VE EMÝR TÜRLERÝ CPU emirlerinin belirttiði iþlemler, bellekte veya CPU kaydedicilerinde saklanan veriler üzerinde icra edilir. Bellekte oturan veriler kendi adresleriyle gösterilir. CPU kaydedicilerinde oturan veriler ise kaydedici adresiyle belirtilir. Kaydedici adresi, CPU içindeki 2 n kaydediciden birini gösteren n-bitlik ikili koddur. Bu yüzden mikroiþlemcisinde 16 kaydedici bulunan bir bilgisayarda, emir kodlarý 4-bitlik kaydedici adres alanýna sahip olmalýdýr. Bilgisayarlar, deðiþik sayýda adres içeren birkaç farklý uzunluklu emirlere sahip olabilir. Emirdeki adres alanlarýn sayýsý CPU içindeki kaydedicilerin iç organizasyonuna baðlýdýr. Ticari bilgisayarlarda iki adresli emirler oldukça yaygýndýr. Her adres alaný ya bir CPU kaydedicisini veya bir bellek adresini gösterir. Örnek olarak bir yerden baþka bir yere veri transferi yapan LOAD (LD) emrini inceleyelim. LD R1, ADDR emiri ADDR adres alanýnda saklanan veriyi R1 kaydedicisine taþýr, yani R1 M [ADDR] iþlemini yapar. Burada M[ADDR] sembolü ADDR adresindeki kelimeyi gösterir. 4.1. ADRESLEME MODLARI Emir kodu, gerçekleþtirilecek iþlemi gösterir. Bu iþlem CPU kaydedicilerinde veya bellekte saklanan bir veri üzerinde gerçekleþtirilir. Program icrasý esnasýnda verilerin seçilmesi yolu, emirin adresleme moduna baðlýdýr. Veri referanslanmadan önce, emir adres alanýnýn yorumlanmasý veya deðiþtirilmesi kuralý adresleme modunu belirtir. Bilgisayarlar, aþaðýdaki koþullardan birini veya her ikisini kapsamak amacýyla adresleme tekniklerini kullanýr. 1. Bellek göstericileri (pointers), döngü denetleme sayýcýlarý, veri indeksleme, ve programý yeniden yükleme (relocation) gibi kolaylýklar saðlayarak kullanýcýya

programlama esnekliði vermek 2. Emirin adresleme alanýndaki bitlerin sayýsýný azaltmak. Adresleme modlarý, emirlerin sayýsý ve icra süresi bakýmýndan programlarý daha verimli yazabilmek için programcýya esneklik kazandýrýr. Bazý bilgisayarlarda emirin adresleme modu açýk ikili kod kullanýlarak belirtilir. Bazýlarýnda ise emirin hem iþlem hem de adresleme modunu gösteren ortak ikili kod kullanýlýr. Emirler çeþitli adresleme modlarýna sahip olacak þekilde tanýmlanabilir, ve bazen iki veya daha fazla adresleme modu bir emirde biraraya getirilebilir. Emir kodu çözülerek, gerçekleþtirilecek iþlem türü ve emirin adresleme modu belirlenir. Açýk adresleme moduna sahip bir emirin biçimi Þekil 4.1 deki örnekte gösterilmiþtir. Ýþlem kodu gerçekleþtirilecek iþlemi belirtir. Mod alaný ise iþlem için gerekli verilerin nasýl adresleneceðini gösterir. Emirde adres alaný bulunabilir veya bulunmayabilir. Eðer adres alaný varsa, bu alan bir bellek adresini veya CPU kaydedicileri için bir kodu gösterebilir. Ayrýca bir emirde birden çok adres alaný bulunabilir. Bu durumda her adres alaný kendine özgü adresleme moduna iliþkin olur. Ýþlem kodu Mod Adres Þekil 4.1. Mod alanýna sahip emirin biçimi. 4.1.1 Ýmalý Bellek Adresleme Ýmalý bellek adresleme tekniðini kullanan bir emir veri sayýcýnýn içeriðini bellek adresi olarak yorumlar. Bu mod, adres alaný gerektirmez. Veri yeri, iþlem kodunun tanýmýnda kapalý olarak belirtilir. Belleði adreslemek için veri sayýcýyý kullanmak iki adýmlýk iþlemdir: 1. Gerekli bellek adresi veri sayýcýya yüklenir. 2. Veri sayýcýnýn içeriðini bellek adresi olarak yorumlayan bir baytlýk bir bellek referanslama emiri icra edilir. CPU yapýsýný incelerken verilen toplama örneðindeki ilk iki adýmý tekrar inceleyelim. Birinci emir mnemonik biçimi ( LD DC, ADDR) olan ve (A3 0A 20) makina koduna karþý düþen veri sayýcýyý yükleme emiridir. Ýkinci emir ise mnemonik biçimi

(LD A, [DC] ) ve makina kodu (38) olan imalý adresleme yaparak akümülatörü bellekten yükleyen bir yükleme emiridir, Þekil 4.2. Burada bellek referanslama emiri bellek adresini belirlemez. Bu emir daha ziyade veri sayýcý tarafýndan adresi ima edilen bellek adresinin referanslanacaðýný gösterir. Bir adres defalarca kulanýlacaksa veya küçük deðiþikliklerle defalarca kullanýlacaksa bu adresleme modu çok elveriþlidir. Veri sayýcýdaki adres, yeniden yükleme yapýlmadýðý sürece orada sabit kalýr. 0100 A3 LD DC, ADDR 0101 0A 0A20 Veri sayýcý 0102 20 3B Akümülatör 0103 38 LD A,[DC] 0104 0A1 F 0A20 0A21 3B Þekil 4.2. Ýmalý adresleme ile verinin akümülatöre taþýnmasý. 4.1.2 Yakýn Bellek Adresleme Yakýn adreslemede veri, emir ile beraberdir. Diðer bir deyiþle yakýn modlu emir, adres alanýndan ziyade veri alanýna sahiptir. Veri alaný, emirde belirtilen iþlemde kullanýlacak gerçek veriyi içerir. Bu adresleme moduna sahip emirler, kaydedicileri sabit deðerlerle yüklemek için çok yararlýdýr. Yakýn mod bir bakýma imalý adreslemedeki iþlemlerin birincisine karþý düþer. Þekil 4.2 deki ilk emir, veri sayýcýyý emir kodundan sonra gelen yakýn deðer (0A 20) ile yüklediðinden bir yakýn adresleme yapýlmýþ olur. 4.1.3 Doðrudan Bellek Adresleme Bu modda emirin adres alaný bellekteki verinin adresini gösterir. Ýmalý adreslemede kullanýlan (LD DC, ADDR) ve (LD A, [DC] ) emirleri doðrudan bellek referans emiri oluþturacak biçimde Þekil 4.3 deki gibi birleþtirilebilir.

Adres kaydedici veri sayýcý ile ayný görevi gerçekler, ama bu kaydedici çok kýsa süreli çalýþýr. Doðrudan bellek referans emiri, hesaplanýp adres kaydediciye yüklenen bir bellek adresi ile baþlar. Bu adres, eriþilecek bellek alanýnýn adresi haline gelir. 0202 61 LD A, [ADDR] 0203 0B 0B20 Adres kaydedici 0204 20 3B Akümülatör 0205 0B20 3B Þekil 4.3. Doðrudan adresleme ile verinin akümülatöre taþýnmasý. 4.1.4 Göreceli Bellek Adresleme Bazý adresleme modlarý etkin adresi hesaplamak için CPU içindeki belirli bir kaydedici içeriðine emir adres alanýnýn eklenmesini gerektirir. Göreceli adresleme modunda etkin adres aþaðýdaki biçimde hesaplanýr: Etkin adres = Emirin adres kýsmý (öteleme) + PC içeriði Emirin adres kýsmý, pozitif veya negatif olabilen iþaretli bir sayýdýr. Bu sayý PC içeriðine eklendiði zaman, elde edilen sonuç programdaki bir sonraki emirin adresine göre etkin adresin bellekteki konumunu verir. Programa göre adresleme, her iki yönde olmak üzere bir sayfanýn yarýsý kadar, emirlerin bellek adreslemesine izin verir. Bu adresleme modu çoðunlukla dallanma emirlerinde kullanýlýr. Adres alaný iþaretli çok büyük öteleme bilgisi oluþturamadýðýndan dolayý, dallanma emirin yakýn civarýna olmalýdýr. Bu sakýncasýna raðmen, küçük adres vererek program sayýcýya göre program bellekte sýnýrlý dallanma imkaný saðladýðýndan çok kullanýþlý bir adresleme türüdür. Durumu daha iyi açýklamak için, 24AE bellek alanýnda göreceli adresleme yapan ve öteleme bilgisi 7A olan bir emirin olduðu örneði inceleyelim. O zaman etkin adres aþaðýdaki þekilde hesaplanýr

0 0 1 0 0 1 0 0 1 0 1 0 1 1 1 0 24 AE 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 7A 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 25 28 Ýþaret biti uzantýsý Belleðin ilerisini adreslemeye iliþkin bu örnek assembli dili emirler kullanýlarak aþaðýdaki þekilde gösterilebilir: Bellek adresi Amaç (object) kodu Kaynak program emiri 24AD BC 7A JMP HERE --- --- --- --- 2528 HERE LD A, THERE Yukarýdaki gösterimde BC sembolü JMP emirin kodunu gösterir. (LD A, THERE emirinin iþlem kodu bu incelemede önemli olmadýðý için verilmemiþtir.) JMP emiri CPU ya alýndýktan sonraki PC içeriðini assembler HERE etiketine iliþkin deðerden çýkararak JMP emirinin öteleme bilgisini hesaplar. HERE etiketinin eþdeðeri = 2528 JMP emiri alýndýktan sonra PC içeriði = 24AF Fark = 0079 Assembler 7F den büyük deðer bulursa, JMP emiri yasal deðildir, ve assembler tarafýndan programcýya bir mesaj gönderilir. JMP ve LD emirleri kendi aralarýnda yer deðiþtirseydi geriye dallanma yapýlacaktý. Assemblerin yaptýðý iþ deðiþmeyecekti ve HERE etiketine ait deðerden PC içeriði çýkarýlarak öteleme hesaplanacaktý. HERE etiketinin eþdeðeri = 24 AD Emir yüklendikten sonra PC içeriði = 25 2A Fark = -7D 4.1.5 Otomatik Artýrma ve Azaltma Yaparak Ýmalý Bellek Adresleme Veri dizisini belleðin bir bölgesinden baþka bir bölgesine taþýmak için iki veri sayýcýdan yararlanýlýr. Bu sayýcýlarda saklanan adresler her bellek eriþiminden sonra artýrýlýr. Veri dizisinin diðer ucundan baþlayan bir program lojiði tasarlamak mümkündür, o zaman bellek adresi her bellek eriþiminden sonra bir azaltýlmalýdýr. Her iki durumda da bellek referanslama iþlemini yapan ve bellek adresini bir artýran veya azaltan tek baytlýk

emir yapýlabilir, Þekil 4.4. Veri sayýcýlardan birine okumanýn yapýlacaðý bellek adresi, diðerine de okunan verinin yazýlacaðý bellek adresi saklanýr ve her iki sayýcý ya artýrýlýr veya azaltýlýr. Böylece bir veri dizisi bir yerden baþka bir yere taþýnmýþ olur. (4) Akümülatörü DC1 üzerinden yükle (4) (6) Akümülatörü DC1 üzerinden yükle ve DC1 sayýcýsýný 1 artýr (5) Akümülatörü DC2 üzerinden sakla (5) (7) Akümülatörü DC2 üzerinden sakla ve DC2 sayýcýsýný bir artýr. (6) DC1 sayýcýsýný bir artýr (7) DC2 sayýcýsýný bir artýr Þekil 4.4. Bellek referanslayan ve veri sayýcý içeriðini bir artýran emirler kullanarak veri dizilerin bellekte taþýnmasý. 4.1.6 Yýðýn Bellek Adresleme Çoðu bilgisayarda bulunan çok yararlý bir özellik yýðýn bellektir. Bu yýðýn songiren ilk- çýkar (last-in fýrst-out, LIFO) bellek olarak da bilinir. Yýðýn, son saklanan bilginin ilk olarak alýndýðý bir saklama cihazýdýr. Yýðýn çoðu uygulama için yararlý olan ve veri iþleme görevini kolaylaþtýracak özellikler taþýyan bir yapýya sahiptir. Aritmetik iþlemleri kolaylaþtýrmak için elektronik hesap makinalarýnda ve bilgisayarlarda verimli bir þekilde kullanýlmaktadýr. Yýðýn bellek, her bellek eriþiminden sonra artýrýlan veya azaltýlan bir adres yardýmýyla kendisine eriþilen bir bellek parçasýdýr. Yýðýnýn adresini tutan kaydediciye yýðýn gösterici (SP) denir, çünkü onun içeriði daima yýðýnýn tepesindekini gösterir. Yýðýnýn tepesine yazmak ve yýðýnýn tepesinden okumak yýðýn üzerinde yapýlan iki yýðýn iþlemidir. Yýðýna yazma itme (push) ve yýðýndan okuma çekme (pop) olarak adlandýrýlýr. Ama fiziksel olarak itilen veya çekilen birþey yoktur. Bu iþlemler yýðýn gösterici artýrýlarak veya azaltýlarak benzetimlenir (simulate). Yýðýn gösterici yýðýnýn baþlangýç deðeriyle yüklenir. Baþlangýç deðeri yýðýnýn bellekteki taban (bottom) adresi olmalýdýr. Daha sonra her itme veya çekme iþlemi yapýldýðý zaman SP otomatik olarak artýrýlýr veya azaltýlýr. Bellek yýðýnýn üstünlüðü adres belirtmeden mikroiþlemcinin kendisine eriþebilmesidir, çünkü adres SP de daima vardýr ve otomatik olarak güncelleþtirilir.

Ýtme iþlemi yýðýn gösterici tarafýndan adreslenen bellek alanýna CPU kaydedicilerinden birinin içeriðini yazar. Önce yýðýnýn yeni tepesini adreslemek için yýðýn göstericinin (SP) içeriði otomatik olarak bir azaltýlýr, ve daha sonra belirtilen kaydedicinin içeriði yýðýnýn tepesine yazýlýr, Þekil 4.5. Yýðýn bellek Yýðýn bellek A:Akümülatör SP:Yýðýn Gösterici A 8F? F021 A 8F? F021 SP F023? F022 SP F022 8F F022 65 F023 65 F023 08 F024 08 F024 (a) Ýtme iþleminden önce (b) Ýtme iþleminden sonra Þekil 4.5. Ýtme iþleminin yapýlýþý. Çekme iþlemi itmenin tam tersidir. Yýðýn göstericinin içeriði ile adreslenen yerden bilgi alýnarak akümülatöre veya CPU nun diðer kaydedicilerine taþýnýr ve yýðýnýn yeni tepesini göstermek amacýyla yýðýn gösterici içeriði otomatik olarak artýrýlýr, Þekil 4.6. A? F021 A 8F F021 SP F022 8F F022 SP F023 8F F022 65 F023 65 F023 08 F024 08 F024 (a) Çekme iþleminden önce (b) Çekme iþleminden sonra Þekil 4.6. Çekme iþleminin yapýlýþý. Veri sayýcý kullanýlarak yapýlan imalý bellek adresleme ile yýðýn gösterici kullanýlarak yapýlan bellek adresleme arasýndaki paralelllik açýktýr. Aralarýndaki tek fark, yýðýn bellek içeriðinin her yazmadan sonra azaltýlmasý ve her okumadan sonra artýrýlmasýdýr. Yýðýn gösterici içeriðinin ne kadar artýrýlacaðý veya azaltýlacaðý çekilen veya itilen kaydedicinin büyüklüðüne baðlýdýr. Örneðin veri kaydedici içeriði yýðýna itileceði zaman, yýðýn gösterici içeriði iki azaltýlýr, ve böylece yýðýn derinliði iki bayt büyür.

Yýðýnýn nasýl kullanýldýðýný açýklayabilmek için altprogramlý bir çalýþmayý inceleyelim. Çoðu programlar sýk sýk tekrarlanan emir dizilerinden oluþmuþtur. Bu dizilerin herbiri program belleðin bir yerine yalnýz bir kere yazýlýr ve her istendiðinde oradan çaðrýlýp icra edilirse, böyle dizilere altprogram denir. Çok baytlý sayýlar üzerinde dört iþlem yapabilen emirler bazý CPU larda yoktur. Bu tür iþlemler birden çok emir kullanýlarak altprogramlar sayesinde gerçekleþtirilir. Toplama, çýkarma, çarpma, ve bölme altprogramlarý bellekte ayrý ayrý bölgelerde oturur ve gerektiðinde ana program içinden CALL emiri ile çaðrýlarak koþturulur. Bu çaðýrma biçimi Þeki 4.7 deki gibi gösterilebilir. Ana programýn kullandýðý program bellek Alt programýn kullandýðý program bellek Þekil 4.7. Ana program tarafýndan altprogramýn çaðrýlmasý. Altprogramlý çalýþma kullanýlmasaydý, ana program içinde ihtiyaç duyulan her noktada altprogramýn tekrarlanmasý zorunlu olacaðýndan program bellek büyüyecekti. Altprogram çaðrýldýðý zaman, PC içeriði yýðýn belleðe itilir ve altprogramýn baþlangýç adresi PC ye yerleþtirilir. Ayrýca PC içeriði iki bayt olduðundan, yýðýnýn yeni tepesini göstermek üzere yýðýn gösterici 2 azaltýlýr. Altprogramdan geri dönebilmek için altprogramýn sonuna bir RET geridön emri konulmalýdýr. Bu emir PC nin eski içeriðini yýðýndan CPU ya taþýr ve yýðýn göstericiyi 2 artýrýr. Altprogramlarý koþullu çaðýrmak ve altprogramlardan koþullu geri dönmek için CPU larýn özel emirleri mevcuttur. Yuvalý (nested) altprogram, bir altprogramýn baþka bir altprogramýn tarafýndan çaðrýlmasý olarak tanýmlanýr. Bir altprogramýn diðeri tarafýndan çaðrýlmasýnda olaðan olmayan herhangi birþey yoktur. Gerçekte altprogramlar çok kere içiçe girebilir. Bazý matamatiksel iþlerde program yazmanýn en etkin yolu kendi kendini çaðýran altprogramlarýn olmasýdýr. Kendi kendini çaðýran altprograma yinelemeli (recursive) altprogram denir.

Geri dönüþ adresleri yýðýnda saklandýðý sürece, altprogramlar yuvalanabilir ve kendi kendilerini çaðýrabilir. Geri dönüþ sýrasý, çaðrýlma sýrasýný tam tamýna izlemek koþulu ile, doðru geri dönüþ adresi daima yýðýnýn tepesinde bulunacaktýr. Yýðýn bellek kesmeli G/Ç iþleminde de kullanýlýr. Bu çalýþmanýn nasýl yapýldýðý ilerideki bölümlerde anlatýlacaðýndan burada bu konuya deðinilmeyecektir. 4.1.7 Dolaylý Bellek Adresleme Dolaylý adres, gerekli etkin adresin tutulduðu yerin adresidir. CPU program bellekten emiri aldýktan sonra, etkin adresi okumak için alýnan emirin adres kýsmýný kullanarak tekrar belleðe eriþir, Þekil 4.8. Etkin adres eriþilecek yerin adresidir. Bellek XX YY Dolaylý adresleyen emirin kodu Dolaylý adres XXYY XXYY + 1 AA BB AABB 3E Þekil 4.8. Dolaylý adresleyen emirin çalýþmasý. LD A, [[ Adres]] emirini inceleyelim. Çift parantez içeriðin içeriði anlamýndadýr. Bu emir icra edildiði zaman akümülatörde 3E deðeri oluþur. Dolaylý adreslemede etkin adres EA = [XXYY] baðýntýsýyla verilir. Dolaylý adresleme sýnýrlý alaný adresleyen emirlere sahip sayfalý bilgisayarlarda çok yararlý olabilir. Çünkü emirin bulunduðu sayfanýn dýþýndaki bellek bölgesine, programýn eriþmesini saðlayan en etkin yoldur. Sayfalý bilgisayarlarda dolaylý adresli bir emir, sayfa içinde etkin adresin tutulduðu yerin adresini taþýr, Þekil 4.9. Bellek

PPQQ Dolaylý adresleyen emir kodu PPQQ + 1 YY Emirin saðladýðý sayfa adresi PPYY AA BB AABB Adreslenen bellek alaný Þekil 4.9. Sayfalý bilgisayarlarda dolaylý bellek adresleme. 4.1.8 Ýndeksli Bellek Adresleme Ýndeksli adres, doðrudan ve imalý adresin toplamýdýr. Ýndeksli adresleme modunda indeks kaydedicinin içeriði etkin adresi elde etmek için emirin adres kýsmýna eklenir, Þekil 4.10. Ýndeks kaydedici, indeks deðerini içeren CPU nun özel bir kaydedicisidir. Emirin adres alaný bellekteki veri dizisinin baþlangýç adresini tanýmlar. Dizideki her bir eleman bu baþlangýç adresine göre bellekte saklanýr. Baþlangýç adresi ile elemanýn adresi arasýndaki uzaklýk, kaydedicide saklanan indeks deðerini oluþturur. Ýndeks kaydedici doðru indeks deðerini içermek koþuluyla, dizinin herhangi bir elemanýna ayný emirle eriþilebilir. Peþpeþe sýralanmýþ dizi elemanlarýna eriþimi kolaylaþtýrmak için indeks kaydedici artýrýlabilir. Zaten indeks adý, bu kaydedici içeriðinin deðiþme olasýlýðýnýn fazla olmasýndan gelmektedir. Ýndeks kaydedici XXYY + Bellek AA Ýndeksli adresleyen emir kodu Öteleme baytý XXYY + AA 8E Adreslenen bellek alaný Þekil 4.10. Ýndeksli bellek adresleme.

4.2 EMÝR TÜRLERÝ Bilgisayarlar çeþitli hasaplama iþlerini yürütmek için kullanýcýya esneklik saðlayan büyük bir emir takýmý içerir. Bilgisayarlarýn emir takýmý bilgisayardan bilgisayara deðiþir. Bu farklýlýk daha çok adres ve mod alanlarýndan yararlanarak operandlarýn belirlenmesi yönteminde olur. Emir takýmlarýn yaptýðý gerçek iþlemler bir bilgisayardan diðerine çok fark etmez. Emirler ayný görevi yapsalar dahi, iþlem kodlarý genellikle farklý bilgisayarlarda farklý yapýdadýr. Ayrýca emirlere verilen sembolik adlar da farklý olur. Buna raðmen çoðu bilgisayarlarda emirlerin dayandýrýldýðý temel iþlemler vardýr. Bilgisayar emirleri üç sýnýfa ayrýlabilir: 1. Veri transfer emirleri 2. Veri iþlem (manipulation) emirleri 3. Program denetleme emirleri Veri transfer emirleri, veriyi deðiþtirmeden bir yerden baþka bir yere taþýr. Veri iþlem emirleri veriler üzerinde aritmetik, lojik, ve kaydýrma iþlemleri gerçekler. Program denetleme emirleri ise karar verme olanaðý saðlar ve programýn icra yönünü deðiþtirir. Bu emir türlerine ilaveten bazý bilgisayarlar özel uygulamalar için bazý özel emirlere sahip olabilir. 4.2.1 Veri Transfer Emirleri Veri transfer emirleri veriyi dðiþtirmeden bir yerden baþka bir yere taþýmaya yarar. Çoðu transferler belek ile CPU kaydedicileri arasýnda, CPU kaydedicilerin kendi arasýnda, veya CPU kaydedicileri ile giriþ ve çýkýþ arasýnda olur. Bilgisayarlarda kullanýlan sekiz veri transfer emirinin listesi Tablo 4.1 de verilmiþtir. Her emire iliþkin mnemonik sembol bu tabloda gösterilmiþtir. Farklý bilgisayarlar ayný tür emir için farklý mnemonik kullanabilir. Yükleme emiri bellekten veriyi alýp CPU kaydedicilerine yükler. Saklama emiri yükle emirinin tersini yapar ve CPU kaydedicilerinden veri alýp bellek adresine depolar. Taþý emiri ise çok kaydedicili mikroiþlemcilerde bir kaydediciden diðerine veri taþýmak için kullanýlýr. Ama taþý emiri ayný zamanda CPU kaydedicileri ile bellek arasýnda, veya farklý bellek alanlarý arasýnda veri transferi yapmak için de kullanýlabilir. Takas emiri iki kaydedici veya bir kaydedici ile bellek adresi arasýnda bilgi deðiþ-tokuþu yapar. Ýtme ve

çekme emirleri yýðýn bellek ile CPU kaydedicileri arasýnda veri transferi yapar. Giriþ ve çýkýþ emirleri ise CPU kaydedicileri ile giriþ ve çýkýþ arayüz cihazlarý arasýnda veri transferi yapar. Tablo 4.1. Veri transfer emirleri. Adý Mnemonik Yükleme(Load) LD Saklama (Store) ST Taþýma (Move) MOVE Takas (exchange) XCH Ýtme (Push) PUSH Çekme (Pop) POP Giriþ (Ýnput) IN Çýkýþ (Output) OUT Giriþ/Çýkýþ (G/Ç) emirleri yükle ve sakla emirlerine benzerdir; aralarýndaki fark bellek adresleri yerine dýþ kaydedicilerden transferin yapýlmasýdýr. Bilgisayarlar dýþ dünya ile haberleþmek için belirli sayýda kapýya (port) sahiptir. Bir dýþ cihaza bir veya daha çok kapý ayrýlabilir. Her kapý bir dýþ kaydediciye eþdeðerdir. Bellek alaný seçmede olduðu gibi, her kapý kendine özgü bir adresle seçilir. G/Ç emirleri, veri transferi için seçilen kapýyý belirlemek amacýyla emir yapýsýnda bir adres alaný içerir. Bellek alanlarýný ve G/Ç kapýlarýný seçmek için iki ayrý adres tahsis biçimi vardýr. Birincisi baðýmsýz G/Ç sistemini kullanýr, ikincisi ise bellek-izdüþümlü yapýdan yararlanýr. Baðýmsýz G/Ç sisteminde, belleðe ve G/Ç kapýlarýna tahsis edilen adresler birbirinden baðýmsýzdýr. Böyle bilgisayarlar ayrý G/Ç emirlerine sahiptir. Bellek adres alaný, kapý adresleri tahsisinden etkilenmez. Ýkinci alternatifte bellek adresleri G/Ç kapýlarýna tahsis edilir. Bu yapý bellekizdüþümlü G/Ç olarak bilinir. G/Ç transferleri yürütmek için ayrý adresler yoktur, çünkü G/Ç kapýlarý bellek alanlarý olarak düþünülür. Her G/Ç kapýsý ayrý bir bellek alaný olarak yorumlanýr. Bellek-izdüþüm yöntemini benimseyen bilgisayarlarda özel G/Ç emirleri yoktur. Bellek iþlemleri ve G/Ç veri iþlemleri için ayný emirler kullanýlýr. 4.2.2 Veri Ýþlem Emirleri

Veri iþlem emirleri veriler üzerinde iþlemler gerçekleþtirir ve bilgisayara hesaplama yeteneði saðlar. Bu emirler üç sýnýfa bölünebilir. 1. Aritmetik emirler 2. Lojik ve bit iþlem emirleri 3. Kaydýrma emirleri 4.2.2.1 Aritmetik Emirler Dörtiþleme iliþkin toplama, çýkarma, çarpma, ve bölme aritmetik iþlem emirleri çoðu bilgisayarda vardýr. Buna raðmen bazý mikroiþlemciler yalnýz toplama ve çýkarma emirlerine sahiptir. O zaman çarpma ve bölme iþlemleri özel programlar vasýtasýyla gerçekleþtirilir.bu dört temel iþlem, herhangi bir sayýsal problemin çözümünü formüle etmek için yeterlidir. Aritmetik emirlerin listesi Tablo 4.2 de verilmiþtir. Artýrma (increment) emiri bellekte veya kaydedicide saklanan deðere bir ekler. Azaltma (decrement) emiri ise bellekte veya kaydedicide saklanan deðerden bir çýkarýr. FFH deðerine sahip bir sayýyý bir artýrmak 00H, ve 00H deðerine sahip bir sayýyý bir azaltmak ise FFH sonucunu doðurur. Tablo 4.2. Aritmetik emirler. Adý Artýrma (increment) Azaltma (Decrement) Toplama (Add) Çýkarma (Subract) Çarpma (Multýply) Bölme (Divide) Elde ile topla Ödünç ile çýkarma Olumsuz (2 li tümleme) Mnemonik INC DEC ADD SUB MUL DIV ADDC SUBB NEG Toplama, çýkarma, çarpma, ve bölme emirleri dört tür veri için mevcut olabilir. Bu aritmetik iþelmlerin icrasý esnasýnda kaydedicide olduðu varsayýlan veri türü, iþlem kodunda kapsatýlmýþtýr.. Bir aritmetik emir iþaretli veya iþaretsiz tamsayýlarý, ikili veya onlu sayýlarý, veya kayan-noktalý verileri belirtebilir. 4.2.2.2 Lojik ve Bit Ýþlem Emirleri

Lojik emirler kaydedici veya bellekte saklanan bit dizileri üzerinde ikili iþlemleri gerçekleþtirir. Bu emirler ikili kodlayan biligiyi gösteren bitleri veya bit gruplarýný iþlemek için çok yararlýdýr. Lojik emirler operandýn her bitini ayrý ayrý ele alýr ve Boole deðiþkeni olarak iþleme tabi tutar. Lojik emirler kullanýlarak kaydedici veya bellekte saklanan operandlardaki bit deðerlerini deðiþtirmek, bir bit grubunu silmek, veya yeni bit deðerlerini operanda sokmak mümkündür. Bazý lojik ve bit iþleme emirleri Tablo 4.3 te listelenmiþtir. Silme emiri belirli bir operandýn tüm bitlerini sýfýrlar. Birleme emiri ise tersine operandýn tüm bitlerini birler. Tümleme emiri operand bitlerinin tersini alýr. AND, OR, ve XOR emirleri operand bitleri üzerinde bu emirlere karþý düþen lojik iþlemleri gerçekler. Bu emirler Boole iþlemlerini gerçeklemelerine raðmen, bilgisayarda kullanýldýklarý zaman bit iþleme emirleri olarak kabul edilirler. Seçilen bitin sýfýrlanmasý; birlenmesi, veya tümlenmesi olmak üzere gerçekten üç bit iþleme emiri vardýr. Tablo 4.3. Lojik ve bit iþleme emirleri. Adý Mnemonik Silme (Clear) CLR Birleme (Set) SET Tümleme (Complement) COM AND leme AND OR lama OR XOR lama XOR Elde sýfýrlama CLRC Elde birleme SETC Elde tümleme COMC 4.2.2.3 Kaydýrma Emirleri Operand içeriðini kaydýran emirler çok çeþitlidir. Kaydýrma, operand bitlerinin saða veya sola kaydýrýldýðý iþlemlerdir. Kelimenin sonundan içeriye kaydýrýlan bit, kullanýlan kaydýrmanýn türünü belirler. Kaydýrma emirleri lojik kaydýrmayý, aritmetik kaydýrmayý, veya döndürme türü iþlemleri ifade eder. Tablo 4.4 te dört cins kaydýrma emiri listelenmiþtir. Lojik kaydýrma, kaydýrma iþlemi sonunda son bit konumuna sýfýr sokar. Son bit konumu, saða kaydýrma için en soldaki bit ve sola kaydýrma için en saðdaki bit konumudur. Aritmetik kaydýrmalar, iþaretli sayýlarýn kaydýrýlmasý kuralarýna uyar. Aritmetik saða kaydýrma emiri en sol konumdaki iþaret bitinin konumunu korur. Ýþaret biti, geriye kalan bitlerle birlikte saða

kaydýrýlýr, ama iþaret bitin kendisi deðiþmeden kalýr. Aritmetik sola kaydýrma emiri, en saðdaki son bit konumuna sýfýr koyar ve lojik sola kaydýrma emirine denktir. Bu yüzden lojik sola kaydýrma emirinin bulunduðu çoðu bilgisayarlarda aritmetik sola kaydýrma emiri yoktur. Tablo 4.4. Kaydýrma emirleri. Adý Lojik saða kaydýrma Lojik sola kaydýrma Aitmetik saða kaydýrma Aritmetik sola kaydýrma Saða döndürme Sola döndürme Elde üzerinden saða döndürme Elde üzerinden sola döndürme Mnemonik SHR SHL SHRA SHLA ROR ROL RORC ROLC Döndürme emirleri dairesel kaydýrma saðlar. Kelime sonundan dýþarý kaydýrýlan bitler, lojik kaydýrmada olduðu gibi, kaybolmaz, ama diðer sondan içeri alýnýrlar. Elde üzerinden döndür emirleri, elde bitini içeriði döndürülecek kaydedicinin uzantýsý olarak görür. Bu yüzden elde üzerinden sola döndür emiri, elde bitini kaydedicinin en saðdaki bit konumuna, en soldaki bitini ise eldeye transfer eder, ve tüm kaydediciyi bir bit sola kaydýrýr. 4.2.3 Program Denetleme Emirleri Program emirleri ardýþýl bellek alanlarýna yerleþtirilir. Denetleme birimi tarafýndan program iþlendiði zaman, emirler ardýþýl bellek alanlarýndan okunur ve birer birer icra edilir. Bellekten her emir alýnýþýnda PC içeriði bir sonraki emirin adresini içerecek þekilde artýrýlýr. Veri transfer veya veri iþlem emirlerinin icrasýndan sonra, denetim tekrar emir alma dönemine geçer ve PC kullanýlarak bir sonraki emir alýnýr. Bunun tersine, program denetleme emirleri PC deki adres deðerini deðiþtirebilir ve program icrasý yönünün saptýrýlmasýna sebep olabilir. Program denetleme emirin icrasý sonucunda PC de meydana gelen deðiþme emir icrasýnýn sýrasýnda deðiþikliðe yol açar. Bu özellik, farklý program dilimlerine dallanma yeteneði verir. Bazý program denetleme emirleri Tablo 4.5 te listelenmiþtir. Dallanma ve atlama emirleri ayný þeyi ifade edecek biçimde kullanýlýr, ama bazen farklý adresleme modlarýný göstermek için kullanýlabilirler. Dallanma emirleri genellikle bir adresli emirlerdir.

Tablo 4.5. Program denetleme emirleri. Adý Mnemonik Dallanma BR Atlama JMP Sýçrama (Bir sonraki emiri atla) SKP Altprogramý çaðýrma CALL Altprogramdan geridönme RET Karþýlaþtýrma (Çýkarma yaparak) CMP Test etme (AND leyerek) TEST Dallanma ve atlama emirleri koþullu veya koþulsuz olabilir. Koþulsuz dallanma emiri herhangi bir koþul olmadan belirtilen etkin adrese dallanmayý saðlar. Koþullu dallanma emiri ise pozitif veya negatif sonucun olmasý durumunda dallan gibi bir koþulu beraberinde taþýr. Ýstenilen koþul saðlanýrsa, PC etkin adres ile yüklenir ve bir sonraki emir bu adresten alýnýr. Koþul saðlanmaz ise, PC içeriði deðiþmez ve bir sonraki emir icra edilir. Sýçrama (skip) emiri adres alaný gerektirmez. Koþullu sýçrama emiri, koþul saðlanýnca bir sonraki emire atlar.bu iþ, alma dönemindeki artýrmaya ilaveten icra döneminde de PC artýrýlarak baþarýlýr. Koþul saðlanmaz ise, icra bir sonraki emirle devam eder. Bir sonraki emir koþulsuz bir dallanma emiri ise, o zaman koþul saðlanmazsa dallan iþlemi gerçekleþtirilmiþ olur. Halbuki koþullu dallanma emiri koþul saðlanýnca atlama saðlýyordu. Karþýlaþtýr ve test et emirleri gerçekte program denetleme emirleri deðildir, çünkü programýn icra sýrasýný kendileri doðrudan doðruya deðiþtiremezler. Tablo 4.5 te bulunmalarýnýn nedeni, kendilerinden sonra gelen dallanma emirleri için bayrak oluþturmada kullanýlmalarýdýr. Karþýlaþtýrma emiri iki operandýn farkýný hasaplar, ama fark deðer saklanmaz. Ama durum bayraklarý iþlemin sonucuna göre güncelleþtirilir. Benzer þekilde, test etme emiri iki operandýn lojik olarak AND lenmesini saðlar ve sonucu saklamadan veya operandlarý deðiþtirmeden sadece belirli bazý bayraklarý güncelleþtirir. Programýn icrasýný altprogramlara yönlendiren emirlere deðiþik adlar verilmektedir. En yaygýn olan adlar altprogramý çaðýr, altiþlemi çaðýr, altprograma atla, veya altprograma dallan adlarýdýr. Altprograma dallan emirin bir adres alaný vardýr. Altprogram çaðýrma emiri aþaðýdaki mikroiþlemlerle gerçeklenir: SP SP -1 Yýðýn göstericiyi azalt

M[SP] PC PC Etkin adres Dönüþ adresini yýðýnda sakla Denetimi altprograma ver Her altprogram çaðýran programa geridönme emiriyle sonlanýr. Altprogramdan geridönme emiri, yýðýndan dönüþ adresini çekip PC ye transfer ederek gerçekleþtirir. PC M [SP] SP SP +1 Dönüþ adresini PC ye taþý Yýðýn göstericiyi artýr Programýn icrasýný normal sýrasýndan saptýrýp baþka noktalara yönlendiren bazý önemli olaylar vardýr. Bu olaylar kesmeli çalýþmayý oluþturur. Kesme, donaným veya yazýlýlmla gerçekleþtirilebilir. Donanýmlý kesmede icra sýrasýnýn deðiþtirilme anýný dýþ cihazlar belirler. Bu konu daha sonra anlatýlacaktýr. Bazý CPU lar yazýlým kesme emirlerine (SWI) sahiptir. Ýcra sýrasýnýn hangi noktaya yönlendirileceðini bu emirin ima ettiði bellek alanýnda bulunan etkin bellek adresi gösterir. 4.3. BAZI ÖRNEK PROGRAMLAR Asseembli dili emirlerinin nasýl kullanýldýðýný göstermek amacýyla bazý örnek programlar yapýlacaktýr. Yukarda anlatýlan emir türlerine uyduðu halde, çoðu bilgisayarýn emirlerinin mnemonikleri birbirinden farklýdýr. Ayrýca ayný görevi gerçekleyen emirlerin bile etkiledikleri durum bayraklarý farklý olabilir. Bu yüzden tüm bilgisayarlarý kapsayacak ortak bir programlama dili mümkün deðildir. Buradaki örnek programlar 6802 CPU emir takýmýna dayanýlarak yazýlacaktýr. Örnek 4.1. BCD (Ýkili Kodlanmýþ Onlu)-Binary (ikili) sayý dönüþümü yapýlmak isteniyor. BCD sayý iki haneli (örneðin 0110 0010 = 62 gibi) olup E000H adresinde tutulmaktadýr. Dönüþüm kuralý aþaðýdaki gibidir. 1. Tamsayý bölmesi yaparak BCD sayý 2 ye bölünür. 2. Kaydýrma ile yapýlan 1. maddedeki bölme iþleminde, onlar hanesinden birler hanesine bir 1 geçiþi olmuþ ise, anlamsýz (birler) haneden 3 çýkararak düzeltme yapýlýr. 3. Kalan bir yerde saklanýp, elde edilen bölüm tekrar tamsayý bölmesi yapýlarak 2 ye bölünür. 4. Bu bölme iþlemi bölüm hanesinde tamsayý çýkmayýncaya kadar tekrarlanýr.

5. Kalanlar uygun sýrada dizilir. Çözüm. Bu örnekte BCD sayý 2 haneli iþaretsiz bir sayý olduðundan, deðeri en fazla 99 olabilir. Bu yüzden saf ikili karþýlýðý için 7-bitlik bir alan yeterlidir. E001H adres alaný saf ikili sayýnýn, diðer bir deyiþle kalanlarýn tutulduðu yerdir. Programda kullanýlan # iþareti yakýn (immediate) veriyi ve $ iþareti ise saðýndaki sayýnýn onaltýlý tabanda yazýldýðýný göstermektedir. Program Þekil 4.11 de verilmiþtir. LDA B # $ 08 BCD sayýdaki bit uzunluðunu belirle LDA A$ E000 BCD sayýyý A ya taþý ve BAÞ LSR A 2 ye böl ROR $ E001 Kalaný sakla BIT A # $ 08 Birler hanesinin en anlamlý biti BEQ DÜZ 1 midir? SUB A # $ 03 Düzeltme yap DÜZ DEC B Bütün bitler için iþlem BNE BAÞ tekrarlandý mý? DUR JMP DUR Bekle Þekil 4.11. Ýkili Kodlanmýþ Onlu-ikili dönüþümü. Örnek 4.2. 6802 CPU çarpma emirlerine sahip deðildir. Bu cins CPU larda çarpma iþlemi altprogram olarak kullanýlan özel bir yazýlým ile saðlanýr. Bu örnekte 16-bitlik iþaretsiz saf ikili sayýlarý çarpabilen bir program yazýlacaktýr. Çarpýlan 0104-0105H adreslerinde, çarpan ise 0106-0107H adreslerinde tutulmaktadýr. Çarpým 32-bit olup 0100H, 0101H, 0102H, ve 0103H adreslerinde tutulacaktýr. Çözüm. Çarpma iþleminin gerçeklenmesinde kullanýlacak algoritmanýn çalýþmasý aþaðýda verilmiþtir. 1. Çarpan bitini test et. Eðer bit 1 ise, çarpýlaný kýsmi çarpýma ekle. Sýfýr ise, çarpýlaný kýsmi çarpýma ekleme. 2. Kýsmi çarpýmý bir bit saða kaydýr. 3. 1. ve 2. adýmdaki iþlemleri tüm çarpan bitleri için tekrarla. Kýsmi çarpýmlardaki anlamsýz bitler yalnýz bir kere toplama iþlemine girdiðinden, çarpýlan kýsmý çarpýma eklenirken 16-bitlik toplama yapmak yeterli olmaktadýr. Kýsmi çarpýmýn her kaydýrýlýþý, en anlamsýz bitten baþlayarak, çarpýmýn yeni bir bitini verir. 16 defa kaydýrma yapýldýðýndan, çarpým kaydedicinin anlamsýz yarýsýndaki çarpmaya baþlamadan önceki deðer tamamen atýlmýþ olur. Bu yüzden çarpým kaydedicinin anlamlý

yarýsý programýn baþlangýcýnda sýfýrlandýðý halde anlamsýz yarýsý temizlenmemiþtir. Program Þekil 4.12 de verilmiþtir. LDA B # $ 10 Operandlarýn uzunluðunu belirle CLR $ 0102 Çarpým kaydedicinin anlamlý CLR $ 0103 yarýsýný sýfýrla KAY1 ROR $ 0107 Çarpaný elde ROR $ 0106 üzerinden döndür BCC $ KAY2 Çarpanýn test edilen biti = 0 mýdýr? CLC LDA A $ 0102 Çarpan biti = 1 ise ADC A $ 0104 çarpýlan kýsmi çarpýma STA A $ 0102 ekle. Yeni kýsmi, LDA A $ 0103 çarpýmý çarpým kaydedicide ADC A $ 0105 sakla STA A $ 0103 KAY2 ROR $ 0103 Çarpým kaydediciyi ROR $ 0102 1-bit saða kaydýr. ROR $ 0101 ROR $ 0100 SON DEC B Tüm çarpým bitleri BEQ $ SON için iþlemler tekrarlandý mý? JMP $ KAY1 WAI Þekil 4.12. 2-baytlýk sayýlarýn çarpýmý. Örnek 4.3. B001H adresinden baþlayan ve uzunluðu B000H adresinde tutulan, küçükten büyüðe doðru sýralanmýþ, ve elemanlarý bir bayt büyüklüðünde pozitif tamsayýlar olan bir sýralý dizi veriliyor. 2111H adresinde oturan bir giriþ cihazýndan alýnan bir baytlýk pozitif tamsayýnýn bu dizide bulunup bulunmadýðýný test ettikten sonra, eðer dizide yoksa, dizinin sýralý oluþunu bozmadan dizide uygun yere koyulmasýný saðlayacak ve dizi uzunluðunu bir artýracak bir program yazýnýz. Çözüm. Giriþ cihazýndan alýnan bilgi dizinin tüm elemanlarýyla sýrayla karþýlaþtýrýlýr. Karþýlaþtýrma CMP emiriyle yapýlýr. Eþitliðe rastlanýrsa, giriþ cihazýndan alýnan deðer dizide vardýr, dolayýsýyla program sonuna atlanýr. Eðer girilen bayt dizi elemanlarýnýn birinden küçük kalýyorsa, girilen baytý bu noktada diziye sokmalýyýz. Dizede yer açmak amacýyla dizinin bu noktadan sonraki elemanlarý bir bayt

ileri kaydýrýlýr. Girilen bayt dizinin tüm elemanlarýndan büyükse, elemanlarýn yerlerinde bir deðiþiklik yapýlmayacak, sadece girilen bayt dizinin sonuna eklenecektir. Girilen bayt dizeye ilave edilince, dizi boyu mutlaka bir artýrýlacaktýr. Program Þekil 4.13 de verilmiþtir. LDX # $ B001 Dizinin baþlangýcýný belirle LDA B $ B000 Dizi uzunluðu izlemek STA B $ AFFF için bellekte sayýcý yap LDA A $ 2111 Dýþardan bilgiyi al BAÞ CMP A $ 00,X [Akü]-[Bellek] iþlemini yaparak karþýlaþtýr. BEQ SON Bilgi dizide vardýr. BMI YERLEÞ [Akü] < [Bellek] dir. Bilgi dizide yoktur. INX DEC $ AFFF Tüm elemanlar için karþýlaþtýrma BNE BAÞ yapýldý mý? YERLEÞ LDA B $ 00, X Alýnan bilginin koyulacaðý STA A $ 00, X yer belirlenmiþtir. Kaydýrmayý TBA yap ve bilgiyi ÝNX belleðe yerleþtir. DEC $ AFFF BGE YERLEÞ [Akü] > [Bellek] ise alýnan bilgiyi INC $ B000 dizi sonuna yerleþtirmeye yarar SON WAI Þekil 4.13. verilen bir baytlýk bilginin sýralý bir dizide bulunup bulunmadýðýný araþtýran program. Örnek 4.4. Ýþaretsiz ikili sayýlardan oluþan bir sayý dizisi azalan sýrada tasnif edilmek isteniyor. Dizi uzunluðu 0040H adresinde tutulmaktadýr. Dizinin kendisi 0041H adresinden baþlamaktadýr. Bu sayý dizisi sýralama programýný yazýnýz. 2111 39 Uzunluk kopyasý AFFF Uzunluk B000 10 B001 22 B002 36 : 38 Dizi (2) 45

56 (3) (1) 72.. Þekil 4.13 ün devamý. Çözüm. Örnek dizi 25 12 86 69 10 70 olsun. Sayý dizisini sýralayabilmek için etkin bir algoritmanýn kurulmasý gerekir. Dizilerin sýralanmasýnda genellikle yuvalý (nested) döngüler kullanýlýr. Döngülerin her ikisi FOR...NEXT biçiminde seçilirse dizinin sýralama süresi sabit olur. Ama döngülerden biri FOR...NEXT diðeri WHILE...WEND kuralýna göre yapýlýrsa, sýralý bir dizi verildiði zaman, dizinin sýralanmasý için yalnýz bir tarama iþlemi yeterli olur. Aksi halde dizideki eleman sayýsý kadar tarama iþlemi gerekli olur. Þekil 4.14 teki programda FOR...NEXT ve WHILE...WEND döngüleri kullanýlmýþtýr, ve her taramada dizinin en küçük elemanlarýndan birinin belirlenmesi amaçlanmýþtýr. Bir tarama iþlemi esnasýnda iki komþu sayýnýn yerleri deðiþtirilmiþ ise yeni bir taramanýn daha yapýlmasý zorunlu olmaktadýr. Bu yer deðiþtirme takas bayraðýnýn birlenmiþ olmasýndan anlaþýlmaktadýr. Örnek dizi sýralandýðý zaman 86 70 69 25 12 10 biçimini alýr. CLR $ 0038 Takas bayraðýnýn yerini belirle BAÞ LDA A$ 0040 Dizi uzunluðunun STA A$ 0039 kopyasýný çýkar DEC $ 0039 (Eleman sayýsý-1) karþýlaþtýrma yap ve BEQ SON tek elemanlý dizi olduðunu belirle LDX #$ 0041 Dizinin baþlangýcýný belirle KARÞ LDA A$ 0,X Komþu iki sayýyý CMP A$ 1,X karþýlaþtýr BPL TEKR Önceki sayý sonrakinden büyükse yer deðiþtir LDA B$ 1,X Önceki sayý küçük ise

TEKR SON STA A$ 1,X takas yap STA B$ 0,X LDA A #$ 01 Takas bayraðýný birle STA A$ 0038 INX DEC $ 0039 Dizi sonuna varýldý mý? BNE KARÞ DEC $ 0038 Yeni tarama gerekiyor mu? BEQ BAÞ WAI Þekil 4.14. Sayý dizisini büyükten küçüðe doðru sýralama programý.