Bölüm 5 · SimülatörKesme Vektör Tablosu: INT ve IRET? ← Bölüm 5Kaynak kod · bağıl konumVektör tablosu (0000:0000–03FF)Yığın (SS = 0700h)Ekran KapatKesme Vektör Tablosu: INT ve IRETAmaç: Bir kesme geldiğinde 8086'nın yaptıklarını sırasıyla görmek. Belleğin ilk 1 KB'ı (00000h–003FFh) 256 kesme tipi için 4'er baytlık vektörler tutar: tip n'nin vektörü n × 4 adresindedir; düşük word IP, yüksek word CS'dir (ikisi de küçük uçlu).Kesme sırasıFLAGS yığına itilir (SP − 2).IF = 0 ve TF = 0 yapılır.CS, sonra dönüş IP'si yığına itilir: toplam 6 bayt.IP ← [n × 4], CS ← [n × 4 + 2]: kesme hizmet yordamı (ISR) başlar.ISR sonundaki IRET; IP, CS ve FLAGS'i ters sırada geri alır. IF'nin eski değeri FLAGS ile geri geldiği için kesmeler yeniden açılır.SenaryolarINT 10h: yazılım kesmesi; vektör F000:F065 (orijinal IBM PC BIOS'unun video yordamı). ROM'daki yordamın kendi komutları gösterilmez, yalnız etkisi ve IRET'i.INT 90h: program kendi yordamını vektör tablosuna yazar. Yordam bayrakları değiştirse de IRET onları geri yükler.Zamanlayıcı (IRQ0): donanım kesmesi komut sınırında kabul edilir. IF = 0 iken istek bekler; STI'dan sonra bir komut daha yürütülür, sonra kesme kabul edilir. 8259A tip numarasını (PC'de 08h) INTA̅ döngüsünde verir; yordam sonunda 20h portuna EOI (kesme sonu) yazılır.Bölme hatası (INT 0): işlemcinin kendi ürettiği kesme. 8086'da yığına itilen adres DIV'den sonraki komuttur (80286 ve sonrası hatalı komutun kendisini iter).Sağ üstteki tabloda mavi baytlar IP, kırmızı baytlar CS kısmıdır; "??" henüz bilinmeyen (BIOS'un bıraktığı) değerdir. Soldaki küçük hesaplayıcı herhangi bir tipin vektör adresini verir. 8086'da FLAGS'in 12–15. bitleri hep 1 okunduğundan yığına F202h gibi değerler yazılır.Kendini dene açıkken vektör adresini, yığına yazılan bayt sayısını ve dönüş adresini tahmin edersiniz.Kod emu8086 sözdizimiyle yazılmıştır; yazmaç, bayrak ve yığın değerleri ortak 8086 yorumlayıcısıyla karşılaştırılarak doğrulanmıştır.İlgili sunum: Bölüm 5 · Kesmeler (vektör tablosu, INT ve IRET, donanım kesmeleri).