Bilgisayar Mimarisi Kesme Uygulaması
Kesme; önceden belirlenmiş olan herhangi bir koşul oluştuğunda o anda yürütülmekte olan programın kesilerek bir kesme hizmet programına (interrupt handler) gidilmesi ve kesme hizmet programı sonlandıktan sonra ana programda kalınan yere dönülmesidir. Kesmeyi oluşturan koşul mikroişlemcinin iç yazılımından (Sıfıra bölme, taşma ya da TRAP komutu) veya dış donanımdan (IPL0,IPL1,IPL2 girişlerine bir işaret gelmesi) kaynaklanabilir.
Bir kesme oluştuğunda kesme kaynağına göre vektör tablosunun ilgili satırından o kesmeye ilişkin adres okunur. Bu adres kesme hizmet programının başlangıç adresidir. Kullanıcı kendi yazacağı kesme hizmet programlarının adreslerini bu tabloya yerleştirmelidir.
Örnek 1’de TRAP komutu ile oluşturulan yazılım kesmeleri (software interrupt) gösterilmiştir. Yazılım kesmeleri, genellikle kullanıcının doğrudan erişemediği sistem kaynaklarının (seri/paralel iletişim arabirimi, ekran, disk) kullanımını sağlamak ve kolaylaştırmak için sistemi tasarlayan kişi tarafından önceden yazılır. Örneğin derste kullanılan simulatör programında da 15 numaralı yazılım kesmesi sistem kaynaklarının kullanımı için önceden hazırlanmıştır. Bu yazılım kesmesinin sağladığı olanakları incelemek için simulatör programında (E68K) HELP TRAP#15 yazınız. TRAP #15 ile ekran, tuş takımı, disk, seri/paralel iletişim arabirimi üzerinde işlemler yapılabilmektedir. Hangi işlemin yapılmak istendiği D0 saklayıcısın sekiz bitlik kısmına yazılan bilgi ile belirtilir. Örneğin D0’a 0 (sıfır) değerinin atanması ekrana bir bilgi yazılmasını ve alt satıra geçilmesini sağlar. Ekrana çıkacak olan bilginin başlangıç adresi A1’de uzunluğu ise D1’de bulunmalıdır. D0’a 1 (bir) yazılırsa ekrana mesaj çıktıktan sonra aynı satırda kalınır. Tuş takımından değer okumak için ise D0’a 2 yazılır. Örnek 1’de ekrana iki mesaj yazılmaktadır. Ekrana önce ‘Birinci Örnek Program:’, alt satıra da ‘Merhaba dünya.’ yazılır. Simülatör programı çalıştırıldığında 15 numaralı yazılım kesmesinin başlangıç adresi vektör tablosuna yazılmaktadır. Bu nedenle kullanıcının bu işlemi ayrıca yapmasına gerek yoktur. Ancak diğer kesmeler için yazılan kesme hizmet programlarının başlangıç adresleri mutlaka vektör tablosuna yazılmalıdır.
[ads9]
opt cre
org $400
start move.b #0,d0 Ekrana yazılacak alt satıra geçilecek
lea mesaj1,a1 Ekrana çıkacak mesajın adresi
move.b uzun1,d1 Mesajın uzunluğu
trap #15 Mesajı ekrana yaz
lea mesaj2,a1 2.mesaj adresi
move.b uzun2,d1 2.mesaj uzunluğu
trap #15 Ekrana yaz
stop #$2000
mesaj1 dc.b ‘Birinci Örnek Program:’
uzun1 dc.b 22
mesaj2 dc.b ‘Merhaba dünya.’
uzun2 dc.b 14
end start
Örnek 1 TRAP #15 yazılım kesmesinin kullanılması
Örnek 2’de ise sıfıra bölme sonucu oluşan kesmenin kullanımı gösterilmiştir. Bu örnekte div_zero adlı bir kesme hizmet programı (service routine) hazırlanmıştır. Hizmet programında hata adresli bellek gözüne ‘1’ yazılmakta ve ekrana ‘Sıfıra bölme’ mesajı çıkarılmaktadır. Böylece ana programda bölme işlemlerinden sonra hata adresli bellek gözüne bakılarak sıfıra bölme olup olmadığı anlaşılabilir. Anaprogramın başında $14 adresine (sıfıra bölme kesmesinin vektör tablosundaki yeri) kesme hizmet programının başlangıç adresi yazılmaktadır. Aynı işlem, move komutunu kullanmak yerine programın başında aşağıda gösterildiği gibi assembler direktifi ile de yapılabilir:
org $14
dc.l div_zero
Anaprogramda iki adet dizi tanımlanmıştır. Birinci dizinin elemanları sırasıyla ikinci dizinin elemanlarına bölünmekte ve sonuç sonuc adresinden itibaren belleğe yazılmaktadır. Eğer sıfıra bölme olmuşsa sonuç olarak $ffff değeri yazılmaktadır.
opt cre
org $400
div_zero movem.l d0-d1/a1,-(a7) Kesme Hizmet Programı(Service routine)
move.b #1,hata Hata gözü 1 yapıldı
move.b #0,d0 Ekrana mesaj yazılacak
lea mesaj,a1 Mesajın adresi
move.b #12,d1 Mesajın uzunluğu
trap #15 Yazılım kesmesi çağırılıyor
movem.l (a7)+,d0-d1/a1 Saklayıcılar yığından geri alındı
rte Hizmet programından geri dönülüyor
org $500 Anaprogram
main move.l #div_zero,($14) Kesme vektörü yazıldı
lea dizi1,a0 Dizilerin adresleri yükleniyor
lea dizi2,a1
lea sonuc,a2
move.w uzunluk,d0
sub.w #1,d0
clr.b hata Hata gözü sıfırlandı
tekrar move.l (a0)+,d2
divs (a1)+,d2
tst.b hata Sıfıra bölme varsa 1 olacak
beq devam Hata yoksa devam
move.w #$ffff,d2 Sıfıra bölme olduysa sonuç:$ffff
clr.b hata Bir sonraki bölme için hata sıfırlandı
devam move.w d2,(a2)+ Sonuç yazılıyor
dbf d0,tekrar
stop #$2000
mesaj dc.b ‘Sıfıra bölme’
hata ds.b 1
dizi1 dc.l 15,-36,89,0,100,77
dizi2 dc.w 3,9,0,-6,-5,0
sonuc ds.w 6
uzunluk dc.w 6
end main
Örnek 2 Sıfıra Bölme Kesmesi
Örnek 3’te donanım kesmelerinin otovektörlü çalışması gösterilmiştir. Örnek olarak 1. düzey ve 3.düzey için kesme hizmet programları yazılmıştır. Ana programın başında kesme hizmet programlarının başlangıç adreslerinin vektör tablosuna yerleşmesi sağlanmaktadır. $64’te 1.düzeyden kesmelere ilişkin kesme hizmet programının başlangıç adresi, $6C’de ise 3.düzeyden kesmelere ilişkin kesme hizmet programının başlangıç adresi, bulunmalıdır. Daha sonra bir döngü içinde sayac değeri test edilmekte ve bu sayaç sıfır olana kadar ana programın içinde aynı test işlemine devam edilmektedir. Sayacın değeri 3. düzeye ait olan kesme hizmet programında (Kesme3) bir azaltılmaktadır. Sayacın başlangıç değeri örnekte 5 olarak verilmiştir. Buna göre 3. düzeyden 5 kere kesme geldiğinde ana program sonlanacaktır. Kesme hizmet programları (Kesme1 ve Kesme3) ekrana KESME 1 ve KESME 3 (hangisi çağrıldıysa) mesajlarını yazmaktadır. Ayrıca Kesme3 programı yukarıda da belirtilidiği gibi sayacı 1 azaltmaktadır. Mikroişlemcinin IPL0, IPL1, IPL2 hatlarından gelen kesme isteğinin mikroişlemci tarafından kabul edilmesi için durum saklayıcısı (status register) SR’de bulunan kesme maskesinde uygun değerin bulunması gerekir. Kesme maskesi SR’nin 8., 9. ve 10. bitlerinde (I0,I1,I2) bulunur. Buraya yazılan değer kabul edilecek olan kesme düzeylerini belirler. Örneğin maskeye 2 yazılırsa sadece 3 ve daha yüksek düzeyden gelen istekler kabul edilir. Simulatör programı çalıştığında maskelerde sıfır değeri bulunduğundan tüm düzeylerden gelen kesme istekleri kabul edilir.
Simülatör programında dış donanımdan gelen kesme isteklerini simule etmek için
INT no ALARM ^süre ifadesi kullanılır. Bunun anlamı, no ile belirtilen düzeyden süre ile belirtilen aralıklarla kesme isteği gelecektir. Süre 1/100 saniye cinsindendir. INT ifadesi ile ilgili daha fazla bilgi almak için simulatörde HELP INT yazınız.
Buna göre Örnek 3’teki programı derleyip simülatöre yükledikten sonra
INT 1 ALARM ^200
INT 3 ALARM ^500
GO
yazılırsa her 2 saniyede 1. düzeyden, her 5 saniyede 3. düzeyden kesme isteği gelecektir.
opt cre
org $400 Ana program
start lea stack,a7
adda.l #60,a7 30 Word = 60 Byte
move.l #Kesme1,($64) 1. düzey kesme vektörü
move.l #Kesme3,($6C) 3. düzey kesme vektörü
test tst.b sayac Sayaç sıfır mı?
bne test Değilse devam.
stop #$2000
Kesme1 movem.l d0-d1/a1,-(a7) 1. Kesme Hizmet programı
move.b #0,d0
lea k1,a1 Mesajın adresi
move.b #7,d1 uzunluk
trap #15
movem.l (a7)+,d0-d1/a1 Saklayıcıları yığından geri al
rte Geri dön
Kesme3 movem.l d0-d1/a1,-(a7) 3. Düzey Kesme Hizmet programı
move.b #0,d0
lea k3,a1 Mesajın adresi
move.b #7,d1 uzunluk
trap #15
subq.b #1,sayac Sayac 1 azaltıldı
movem.l (a7)+,d0-d1/a1 Saklayıcıları yığından geri al
rte Geri dön
k1 dc.b ‘KESME 1’
k3 dc.b ‘KESME 3’
sayac dc.b 5
stack ds.w 30 Yığın için 30 sözcüklük(word) yer
end start
Asus N55 woaw dedirtmedi bana, aslında henrahgi bir xtreme yanınıda gf6remedim. Bence Asus fcstfcne basa basa bu bir multimedya laptopu demektense, ofis ortamında kullanılabilinir, hem iş hem de film izleyip mfczik dinlemek ie7in iyi bir model diyebilirdi. Fiyatının yfcksek olması bekleniyor şayet olursa bfcyfck handicaplar yaratıcaktır. Ayrıca Levent Bey disk kapasitesini belirtirken dili sfcrtmfcş sanırım 640 kb olarak iletti bize Kulaklık ise film haricinde oyun ve mfczik dinlemek ie7in gfczel bir kulaklık, ayrıca modfcler kablo sistemi e7ok iyi dfcşfcnfclmfcş, bu sayede 2 ucu stereo 3,5mm jack ile mp3 ve mobil cihazlar ile kullanılabilinir. Kontrol dfcğmeleri ve dış mekanda işinize yaramayacak olan kulaklık kablosunun dağınıklığı ortadan kalkmış olur. Ses değerleri ve ağırlığı hakkında bildi olsaydı inceleme, unboxing incelemeden biraz uzaklaşırdı.Ayrıca Murat Bey’in f6nfcndeki teknoseyir kupasının ie7indeki siyah nesne nedir?