Bölüm 5 · Simülatör

Kesme Vektör Tablosu: INT ve IRET

← Bölüm 5
Kaynak kod · bağıl konum
    Vektör tablosu (0000:0000–03FF)
    Yığın (SS = 0700h)
    Ekran

    Kesme Vektör Tablosu: INT ve IRET

    Amaç: 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ı

    1. FLAGS yığına itilir (SP − 2).
    2. IF = 0 ve TF = 0 yapılır.
    3. CS, sonra dönüş IP'si yığına itilir: toplam 6 bayt.
    4. IP ← [n × 4], CS ← [n × 4 + 2]: kesme hizmet yordamı (ISR) başlar.
    5. 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.

    Senaryolar

    • INT 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).