1 / 18

Mikroişlemciler

Mikroişlemciler. Kesmeler (Interrupts). İçerik. Kesmeler. Ö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:

zita
Download Presentation

Mikroişlemciler

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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, CLIkomutu kullanılarak Interrupt Flagkesme bayrağının temizlenmesi ile kullanım dışı bırakılır. • Kesmeler, STIkomutu 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 IRETkomutu 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. 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: 0-255 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 = 65536 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' INT 10h ; Harfi yazdır! MOV AL, 'l' INT 10h ; Harfi yazdır! MOV AL, 'l' INT 10h ; Harfi yazdır! MOV AL, 'o' INT 10h ; Harfi yazdır! MOV AL, '!' INT 10h ; Harfi yazdır! 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 movbh, 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.

  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ğı.

More Related