Bu sayfadaki yazılar
Sayfanın metni
Sayfa 45
Interrupt'ın Anahtarları: CLI, SEI, RTI, BRK
IRQ olarak adlandırılan Interrupt, statü registerindeki I-Bayrağı kullanılarak devre dışı bırakılabilir. “Clear Interrupt Mask” sözcüklerinden türetilmiş olan CLI komutu I-Bayrağını temizlemektedir. Interrupt'ın her kullanılışından sonra işlemler tekrar prosesöre bırakılacaksa statü registerindeki bu Bit CLI ile sıfırlanmalıdır. SEI (Set Interrupt Mask) ise CLI'nın tam tersini yapmakta, yani I-Bayrağına “1” değerini vermektedir. Bu şekilde Interrupt'ı kendi isteğiniz doğrultusunda kullanabilirsiniz.
Resim 2: Interrupt çeşitleri
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 44
6510 makine dilini tanıtan kursumuzun geride kalan dokuz bölümünde, dört tanesi dışında tüm komutları ele almıştık. Bilgisayarımızın Interrupt'ları ile ilgili olan son dört komut ise bu ayki yazımızın ana konusunu oluşturmaktadır. Assembler'ı Basic'ten ayıran en önemli özellik Interrupt'lardır. Dört adet 1-Bayt'lık komut Assembler kullanıcıları için sınırsız olanaklar sunmaktadır. İsterseniz işe yeni başlayanlar için Interrupt'ın ne anlama geldiğini açıklayalım. Bilgisayarımız açık kaldığı süre zarfında her an bir işle uğraşmaktadır. Örneğin program yazarken çoğunlukla kernalda yer alan bir geciktirme döngüsü ve Input alt programı bizden veri girişi yapmamızı beklemektedir. Cursorun yanıp sönmesini sağlayan, TIS$ saatini işleten ve daha birçok hayati önem taşıyan işlevi yerine getiren Interrupt'lardır. Yazı dizimizin ilk bölümünde bir insanla bilgisayar arasındaki farkı belirtirken insanın aynı anda birkaç iş yapabildiğini, buna karşın bilgisayarın ise yalnızca tek bir işi çok hızlı olarak (aşağı yukarı saniyenin milyonda biri sürede) gerçekleştirdiğini söylemiştik. Bu durumda bilgisayar birkaç işlem birden yapmak isteyince, bunların hepsine ayrı ayrı kısa bir zaman ayırmakta ve sırayla hepsini halletmektedir. “Interrupt” sözcüğünün dilimizdeki karşılığı “kesinti”dir. Bilgisayarımız belli zaman aralıkları ile programı kesmekte, JSR ile bir alt programa atlamakta, buradaki işlemleri yapmakta ve tekrar kaldığı yere dönmektedir. Tabii bu zaman aralıkları çok çok kısa olduğu için (saniyenin altmışta biri) biz bunu fark edemeyiz. İşte Interrupt olayının kısa özeti budur. Hemen hemen bütün mikroişlemciler bu tür bir kesinti sistemine sahiptir. Aşağıdaki sorular ve cevapları Interrupt'lar hakkında daha detaylı bilgi verecektir: 1.) Mikroişlemci (CPU) Interrupt'lar için kaç tane giriş kanalına sahiptir? 6510 mikro işlemcisinde (RESET sayılmazsa) iki tane kullanılabilir Interrupt girişi mevcuttur. Bunlara biraz sonra detaylı olarak değineceğiz. 2.) CPU, önemli ve daha az önemli kesintiler arasında bir ayırım yapabilir mi? Mikro işlemci önemli ve daha az önemli kesintiler arasındaki ayrımı sadece iki Interrupt girişinin önceliklerine göre belirleyebilir. IRQ adındaki birinci Interrupt 6510
Anıl Gül makine dili komutlarıyla doğrudan doğruya kullanılırken, NMI (Non Maskable Interrupt) adındaki diğer Interrupt'ın kullanımı bu kadar kolay değildir. Bu nedenle IRQ'ya göre NMI daha önceliklidir ve önemli işlerde kullanılır. 3.) Interrupt sistemi nasıl değiştirilebilir veya devre dışı bırakılabilir? Prosesörün Flaggen-Register'inin ikinci Bit'inden serbest bırakılabilir. Bu Bit aynı zamanda Flag olarak da adlandırılır ve özel iki komutla kumanda edilir. NMI için ise prosesör işlemleri ayrıca durdurulamaz. 4.) CPU herhangi bir kesintiye nasıl tepki gösterir? Bu soruyu dört şık halinde yanıtlayacağız: a) Her komutun sonunda mikroişlemci otomatik olarak Interrupt sisteminin durumunu kontrol eder. Eğer iki Interrupt'tan biri serbest bırakılmış ise, çalışan ana program durur ve kesinti başlar. b) Önce programın kesildiği andaki Program Counter (Program sayacı) değeri yüksek ve alçak bayt olarak stack'a yazılır. Daha sonra statü-registeri de aynen kaydedilir (Resim 1). c) I-Flag'a “1” değeri verilerek de diğer gereksiz kullanılabilir Interrupt'lar (IRQ) ortadan kaldırılır. d) CPU son olarak belli iki adresdeki değerleri alır ve bunları program sayacına kaydeder. Böylelikle ana program içinde çalışması istenen ikinci bir programın da adresleri bilgisayara bildirilmiş olur. Resim 2'de 6510 makine dilinde mümkün olan kesinti türlerinin orijinal adresleri yer almaktadır. Yalnız bu listeye RESET de bir Interrupt çeşidi olarak dahil edilmiştir. Gerekli düzenlemeleri yaparak aynı IRQ'da olduğu gibi, RESET tuşuna basıldığında hafızanın herhangi bir bölgesinde bulunan programı çalıştırabilir veya programlarınızın RESET'e basılarak kırılmasını engelleyebilirsiniz. Bu işin nasıl yapılacağını daha sonra açıklayacağız. Şimdi isterseniz son dört komutu da öğrenelim: