Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Kesmeler (Interrupts)

Benzer bir sunumlar


... konulu sunumlar: "Kesmeler (Interrupts)"— Sunum transkripti:

1 Kesmeler (Interrupts)
Mikroişlemciler Kesmeler (Interrupts)

2 İçerik Kesmeler

3 Örnek Bir odada bulunan bir kişi düşünün. Örneğin ders notu hazırlayan bir öğretim üyesi olsun. Bu kişi, çalışırken kesmelere maruz kalabilir: Kesmelere maruz kaldığında, işi gerçekleştirecek, sonra kaldığı yerden ders notu hazırlamaya devam edecektir. Bazı kesmeleri ihmal etmeyi veya ertelemeyi seçebilir. Örneğin, bir yazılım için gelen öğrencilere sonra gelmelerini söyleyebilir. Telefon çalabilir. Eğer çok meşgul ise, cevap vermeyebilir. Bazı kesmelere mutlaka cevap verilmelidir. Yangın alarmı gibi. Kesmelere, akıllı bir cevap mekanizması uygulanmalıdır.

4 Örnek: Otobüs sürücüsü
Otobüs sürücüsü, normal olarak otobüsü sürmektedir. Eğer, bir yolcu tarafından durma tuşuna basıldığında sürücü, Bir sonraki durağa doğru yaklaş ve dur Kapıyı aç Yolcuların çıkması için bekle Kapıyı kapat Devam et Sürücü, kesme geldiğinde, önceden belirlenmiş bir dizi işlemi gerçekleştirecektir. İşlemci mimarisinin önemli bir bölümü, kesmelerin karşılanması içindir.

5 8086’daki kesmeler 8086’da bir kesme, intr pin’i 0’dan 1’e geçtiğinde gerçekleşir. Bu kesme, CLI komutu kullanılarak Interrupt Flag kesme bayrağının temizlenmesi ile kullanım dışı bırakılır. Kesmeler, STI komutu kullanılarak tekrar kullanım içine alınır. Ayrıca, gerçek acil durumlar için NMI (Non Maskable Interrupt) de bulunur. Kesmeler, genellikle I/O aygıtları tarafından başlatılırlar.

6 8086’daki kesmeler Bir kesme oluştuğu zaman, mikroişlemci:
Kesmenin durumu stack’e atılır. Kesmenin gerektirdiği fonksiyon olan ISR (Interrupt Service Routine) gerçekleştirilir. Kesmeden önceki durum stack’ten IRET komutu ile geri yüklenir. ISR, özel bir fonksiyon çeşididir.

7 8086’daki kesmeler Kesme oluştuğu zaman, CPU, mevcut komutu tamamladıktan sonra: Maskelenebilir Kesmeleri, CLI komutu ile devre dışı bırakır. Bu sayede, kesmede iken kesmeye maruz kalınmasına engel olunur. Programcı, ISR içerisinde STI komutunu çağırarak, bu özelliği kaldırabilir. IP, CS register’ları ile bayrak register’ı, stack’te saklanır. N, kesme sayısı olmak üzere 4*N hafıza adresine atlama yapılır. Bu adreste bulunan ISR çalıştırılır. ISR’nin sonunda, IRET komutu kullanılarak IP, CS ve bayrak register’larının ilk durumları geri çağrılır.

8 Kesme Atlama Tablosu 20 bitlik 8086 hafıza haritasının en altında Kesme Atlama Tablosu bulunur. Interrupt Number Address Memory 2 000B-000A IP CS 1 ISR’nin bulunduğu yerin tam adresi

9 Emülatördeki kesmeler
Kesmeler, fonksiyon olarak görülebilir. Bu fonksiyonlar, programlamayı kolaylaştırır. Bir karakteri yazan bir kod yazmaktansa, ilgili kesme kullanılabilir.

10 INT Komutu Kodun içerisinde Kesme yapmak için INT komutu kullanılır. Basit bir yapısı vardır: INT deger Deger: arası (0-0FFh) bir sayıdır. Genellik ile heksadesimal sayılar kullanılır.

11 Alt fonksiyonlar 256 tane fonksiyondan fazla fonksiyon kullanılabilir. Her kesmenin alt fonksiyonları olabilir. Alt fonksiyon tanımlamak için AH register’ına, kesme yapmadan önce bir değer atanır. Her kesmenin 256 tane alt fonksiyonu olabilir. Yani 256*256 = fonksiyon gerçeklenebilir. Genellikle AH register’ı kullanılır. Genellikle, diğer register’lar, alt fonksiyonlara parametre veya veri göndermek için kullanılır. Ancak bazı özel durumlarda, alt fonksiyon tanımlamak için diğer register’lar da kullanılabilir.

12 INT 10h INT 10h kesmesi: 0Eh alt fonksiyonu, ekrana tek bir karakter yazdırmak için kullanılır. Ekrana yazılacak olan karakter AL register’ında bulunur. AH register’ındaki değer değişmez. EMU8086 Emülatörü üzerindeki kodlar hakkında bilgi verdiğimizi unutmayın. Farklı laboratuvar kitlerinde, farklı tanımlamalar yapılmış olabilir.

13 Örnek: Hello World ORG 100h MOV AH, 0Eh ; alt fonksiyon seç. MOV AL, 'H' INT 10h ; Harfi yazdır! MOV AL, 'e' MOV AL, 'l' MOV AL, 'o' MOV AL, '!' RET

14 İmleç pozisyonunu değiştirmek
INT 10h / AH = 02h Girdiler: DH = satır DL = sütun BH = sayfa sayısı (0..7) Örnek: mov dh, 10 mov dl, 20 mov bh, 0 mov ah, 2 int 10h

15 Karakter ve özellik okuma
INT 10h / AH = 08h - imleç pozisyonundaki karakteri ve özelliği okuma. Girdi: BH = Sayfa sayısı. Dönüt: AH = özellik. AL = karakter.

16 Karakter ve özellik yazma
INT 10h / AH = 09h - İmleç pozisyonuna karakter ve özellik yazmak. Girdi: AL = Yazılacak karakter. BH = Sayfa sayısı. BL = özellik. CX = Karakterin kaç defa yazılacağı.

17 Özellikler Karakter özellikleri 8 bitlik değerlerdir. Düşük olan 4 karakterde yazı rengi, yüksek olan 4 bitte ise arka plan rengi tanımlıdır. HEX BIN Color 0000 Black 8 1000 Dark Gray 1 0001 Blue 9 1001 Light Blue 2 0010 Green A 1010 Light Green 3 0011 Cyan B 1011 Light Cyan 4 0100 Red C 1100 Light Red 5 0101 Magenta D 1101 Light Magenta 6 0110 Brown E 1110 Yellow 7 0111 Light Gray F 1111 White

18 Karakter yazma INT 10h / AH = 0Ah - Sadece imleç pozisyonuna karakter yazmak. Girdi: AL = Yazılacak karakter. BH = Sayfa sayısı. CX = Karakterin kaç defa yazılacağı.


"Kesmeler (Interrupts)" indir ppt

Benzer bir sunumlar


Google Reklamları