Bölüm 5: Kesmeler
Giriş
Öğrenme Çıktıları
Kesmenin ne olduğunu, yoklamadan (polling) farkını ve kesme türlerini açıklamak.
Kesme vektör tablosunu kullanarak INT n ile hangi adrese gidileceğini hesaplamak.
INT ve IRET sırasında FLAGS, CS ve IP'nin yığına nasıl yazılıp geri alındığını izlemek.
BIOS (INT 10h, INT 16h) ve DOS (INT 21h) hizmetleriyle ekrana yazan, tuş bekleyen programlar yazmak.
Kesme Kavramı
Kesme Nedir?
- Kesme (interrupt), işlemcinin o anki işini geçici olarak bırakıp özel bir yordamı çalıştırmasını sağlayan olaydır.
- Çalıştırılan yordama kesme hizmet yordamı denir: ISR (interrupt service routine).
- ISR bitince işlemci, kaldığı komuttan devam eder; ana program kesildiğini fark etmez.
- Yazılım kesmeleri, programlamayı kolaylaştıran hazır hizmetlerdir: karakter yazdırmak için kod yazmak yerine bir kesme çağrılır.
- Ekran, klavye, disk sürücüsü, bellek yönetimi gibi donanımlarla çalışan kesme işlevleri vardır.
- Kesmeler donanım tarafından da tetiklenebilir (klavyeye basılması, zamanlayıcı).
Kitap okurken telefon çalar: sayfayı işaretlersiniz (dönüş adresini saklama), telefonu açarsınız (ISR), kapatınca işaretli sayfadan okumaya devam edersiniz (IRET).
Kesme Kavramı
Yoklama mı, Kesme mi?
Yoklama
- Basit, ek donanım gerekmez.
- CPU zamanı boşa harcanır.
- Olay, sorgu aralığına bağlı olarak geç algılanır.
Kesme
- CPU yalnızca olay olduğunda meşgul edilir.
- Olaya hızlı tepki verilir.
- Vektör tablosu, yığın ve ISR düzeni gerekir.
Kesme Kavramı
Kesme Türleri
Program içindeki INT n komutuyla bilerek çağrılır. BIOS ve DOS hizmetleri bu yolla kullanılır. INT 3 (kesme noktası) ve INTO (OF=1 ise INT 4) de yazılım kesmesidir.
Dış aygıt bir pini sürer. INTR maskelenebilir (IF=0 iken dikkate alınmaz), NMI maskelenemez (ör. bellek eşlik hatası, güç kaybı).
İşlemcinin kendisi üretir: sıfıra bölme / bölüm taşması → INT 0, TF=1 iken her komuttan sonra tek adım → INT 1.
| Tip | Kaynak | Açıklama |
|---|---|---|
00h | iç | Bölme hatası (DIV/IDIV sıfıra bölme veya bölüm sığmıyor) |
01h | iç | Tek adım (TF = 1) — hata ayıklayıcılar kullanır |
02h | donanım | NMI pini (maskelenemez) |
03h | yazılım | Kesme noktası; tek baytlık INT 3 (CCh) |
04h | yazılım | INTO: OF = 1 ise taşma kesmesi |
05h–FFh | — | Intel 05h–1Fh'yi ayırmıştır; PC'de BIOS, DOS ve kullanıcı programları kullanır |
Kesme Vektör Tablosu
Kesme Vektör Tablosu (IVT)
- Belleğin en başındaki 1 KB:
00000h–003FFh. - 256 kesme tipinin her biri için 4 baytlık bir vektör (ISR'nin adresi) tutulur.
- Düşük adresli sözcük IP (bağıl konum), yüksek adresli sözcük CS (kesim) değeridir; ikisi de little-endian.
- Tip n için vektörün adresi: n × 4.
- Vektörü değiştirmek, kesmeyi başka bir yordama yönlendirmek demektir.
INT 10h vektörü için gösterilen F000:F065 değeri, orijinal IBM PC BIOS'undaki video yordamının adresidir (örnek).
Kesme Vektör Tablosu
Vektör Adresi Adım Adım
Program INT 10h komutunu çalıştırır. Tip numarası n = 10h (16).
Vektör adresi n × 4: 10h × 4 = 40h. (Hex'te ×4, iki bit sola kaydırmaktır.)
Bu 4 bayt okunur: düşük sözcük IP = F065h, yüksek sözcük CS = F000h (little-endian: önce düşük bayt).
Yığına dönüş bilgisi yazıldıktan sonra CS:IP = F000:F065 yüklenir; ISR, fiziksel FF065h adresinden çalışmaya başlar.
Kesme Vektör Tablosu
Demo: Vektör Hesaplayıcı
Bir kesme tipi girin (00h–FFh): tablodaki konumu ve kesmenin bilinen görevi gösterilir.
adres = n × 4. IP bu adreste, CS ise n × 4 + 2 adresindedir.INT ve IRET
INT n Nasıl Çalışır?
SP ← SP − 2, [SS:SP] ← FLAGS.IP ← [n×4], CS ← [n×4+2]: ISR başlar.INT ve IRET
INT ve IRET: Yığın Adım Adım
INT 10h 0700:0104'te. SP = FFFEh, FLAGS = 0202h (IF = 1, örnek).
FLAGS itilir: SP = FFFCh, [FFFCh] = 0202h.
IF = 0, TF = 0 → FLAGS = 0002h. Eski değer yığında güvende.
CS itilir: SP = FFFAh, [FFFAh] = 0700h.
Dönüş adresi itilir: INT 10h 2 bayt olduğu için 0106h. SP = FFF8h.
CS:IP ← vektör (F000:F065). ISR çalışır ve karakteri yazar.
IRET: IP ← 0106h, CS ← 0700h (SP = FFFCh).
FLAGS ← 0202h, SP = FFFEh. Program 0106h'den devam eder. (Yığındaki eski değerler silinmez, yalnızca SP geri çekilir.)
INT ve IRET
INT/IRET ile CALL/RET
CALL / RET | INT n / IRET | |
|---|---|---|
| Hedef adres | komutun içinde (etiket) | vektör tablosundan (n × 4) |
| Yığına yazılan | IP (yakın) veya CS + IP (uzak) | FLAGS + CS + IP (6 bayt) |
| Bayraklar | değişmez | IF = 0, TF = 0 yapılır |
| Dönüş | RET: IP (ve CS) geri alınır | IRET: IP, CS, FLAGS geri alınır |
| Komut boyu | 3 bayt (yakın CALL) | 2 bayt (INT 3: 1 bayt) |
| Kim çağırır? | yalnız program | program, işlemci (istisna) veya donanım |
RET ile bitirmek hatadır: FLAGS yığında kalır, SP 2 bayt kayar ve IF eski hâline dönmez. ISR'ler daima IRET ile biter.Yazılım Kesmeleri
INT Komutu ve Alt Fonksiyonlar
- Yazılım kesmesi
INT değerkomutuyla çağrılır; değer 0–255 (0–0FFh) arasında bir sayıdır. - Bir kesmenin birçok alt fonksiyonu olabilir.
- Alt fonksiyon, kesme çağrılmadan önce AH yazmacına yazılarak seçilir.
- AH 8 bit olduğundan her kesmenin en fazla 256 alt fonksiyonu olabilir: 256 × 256 = 65 536 farklı hizmet (teorik üst sınır).
- Diğer yazmaçlar (AL, BX, CX, DX, DS:DX …) parametre iletmek ve sonuç almak için kullanılır.
MOV AH, 0Eh ; alt fonksiyon MOV AL, 'A' ; parametre INT 10h ; hizmeti çağır
INT 10h, AX = 4F00h: VESA). Kesme, sonucu çoğunlukla AL/AX'te ya da bayraklarda (CF, ZF) döndürür.Yazılım Kesmeleri
Sık Kullanılan Kesmeler
| Kesme | Katman | Görev | Örnek alt fonksiyonlar |
|---|---|---|---|
INT 10h | BIOS | Video / ekran | 00h kip seç, 02h imleç konumu, 0Eh karakter yaz (teletype) |
INT 13h | BIOS | Disk | 02h sektör oku, 03h sektör yaz |
INT 16h | BIOS | Klavye | 00h tuş bekle ve oku, 01h tuş var mı? |
INT 1Ah | BIOS | Saat | 00h tik sayacını oku |
INT 20h | DOS | Programı sonlandır | — |
INT 21h | DOS | DOS hizmetleri | 01h tuş oku, 02h karakter yaz, 09h dizge yaz, 4Ch çık |
INT 33h | sürücü | Fare | 00h sıfırla, 03h konum ve düğmeler |
Yazılım Kesmeleri
BIOS ve DOS Katmanları
ROM'daki temel giriş/çıkış sistemi. İşletim sisteminden bağımsızdır; açılışta vektör tablosunu doldurur.
İşletim sistemi hizmetleri: dosya, bellek, program yükleme/sonlandırma. Kendi işi için çoğu zaman BIOS'u çağırır.
INT 10h: Ekran
Ekrana Yazı Yazma
ORG 100h MOV AH, 0Eh ; alt fonksiyon seç. MOV AL, 'H' ; ASCII kodu: 72 INT 10h ; yazdır! MOV AL, 'e' ; ASCII kodu: 101 INT 10h ; yazdır! MOV AL, 'l' ; ASCII kodu: 108 INT 10h ; yazdır! MOV AL, 'l' ; ASCII kodu: 108 INT 10h ; yazdır! RET ; işletim sistemine geri dön.
INT 10h, ekrana karakter yazdırmak ve imleci hareket ettirmek için kullanılır.- 0Eh alt fonksiyonu (teletype): AL'deki ASCII kodunu imlecin olduğu yere yazar ve imleci bir ilerletir.
- Her karakter için AL'ye ASCII kodu atanır, ardından
INT 10hçağrılır. - AH, kesme tarafından değiştirilmediği için yalnızca bir kez ayarlanır.
- Program ekrana Hell yazar; “Hello” için iki komut daha gerekir.
INT 10h: Ekran · Kodu adım adım çalıştır
Kod İzleme: INT 10h / 0Eh
AH = 0Eh: teletype alt fonksiyonu seçildi.
AL ← 'H' = 72 = 48h.
INT 10h: 'H' yazılır, imleç bir sağa geçer.
AL ← 'e' = 101 = 65h.
INT 10h: 'e' yazılır, imleç bir sağa geçer.
AL ← 'l' = 108 = 6Ch.
INT 10h: 'l' yazılır, imleç bir sağa geçer.
AL ← 'l' = 108 = 6Ch.
INT 10h: 'l' yazılır, imleç bir sağa geçer.
RET: COM programı DOS'a döner. Ekranda Hell kalır.
ORG 100h MOV AH, 0Eh ; alt fonksiyon seç. MOV AL, 'H' ; ASCII kodu: 72 INT 10h ; yazdır! MOV AL, 'e' ; ASCII kodu: 101 INT 10h ; yazdır! MOV AL, 'l' ; ASCII kodu: 108 INT 10h ; yazdır! MOV AL, 'l' ; ASCII kodu: 108 INT 10h ; yazdır! RET ; işletim sistemine geri dön.
INT 10h: Ekran
INT 10h: Diğer Alt Fonksiyonlar
| AH | İşlev | Girdi | Not |
|---|---|---|---|
00h | Video kipini seç | AL = kip (03h: 80×25 metin) | ekranı da temizler |
02h | İmleci konumlandır | BH = sayfa, DH = satır, DL = sütun | sol üst köşe (0, 0) |
03h | İmleç konumunu oku | BH = sayfa | DH, DL'de döner |
06h | Pencereyi yukarı kaydır | AL = satır sayısı (0: temizle), BH = renk, CX–DX = köşeler | ekran temizleme |
09h | Karakter + renk yaz | AL = karakter, BL = renk, CX = tekrar | imleç ilerlemez |
0Eh | Teletype yaz | AL = karakter (BH = sayfa) | imleç ilerler, CR/LF işlenir |
INT 10h: Ekran
Demo: Metinden INT 10h Koduna
Bir metin yazın: her karakter için gereken MOV AL / INT 10h çifti ve ASCII kodları üretilir.
INT 16h: Klavye
Klavye Tuşunu Bekleme
ORG 100h ; wait for any key press: MOV AH, 0 INT 16H RET
INT 16h, BIOS klavye hizmetidir.- AH = 00h: bir tuşa basılana kadar bekler; tuş arabellekten alınır.
- Dönüşte AL = ASCII kodu, AH = tarama kodu (scan code). Ör. 'a' → AL = 61h, AH = 1Eh.
- Ekrana bir şey yazmaz (yankı yoktur).
- AH = 01h: beklemeden kontrol eder; tuş yoksa ZF = 1, varsa ZF = 0 ve AX'te tuş (arabellekten silinmez).
- Program sonundaki
MOV AH,0 / INT 16h, çıktı ekranının kapanmadan önce okunabilmesini sağlar.
INT 16h: Klavye · Kodu adım adım çalıştır
Kod İzleme: Tuşu Oku ve Yankıla
AH = 0: “tuş bekle ve oku” alt fonksiyonu.
INT 16h: program burada bekler; kullanıcı henüz tuşa basmadı.
Kullanıcı a tuşuna bastı: AL = 61h ('a'), AH = 1Eh (A tuşunun tarama kodu). Ekranda henüz bir şey yok.
AH = 0Eh. AL hâlâ 61h: okunan karakter doğrudan yazdırılabilir.
INT 10h: 'a' ekrana yazılır (yankı).
RET: DOS'a dönüş.
ORG 100h MOV AH, 0 ; tuş bekle INT 16h ; AL = ASCII, AH = tarama MOV AH, 0Eh ; teletype INT 10h ; AL'yi yaz RET
INT 21h: DOS
INT 21h Hizmetleri
| AH | İşlev | Girdi | Çıktı |
|---|---|---|---|
01h | Tuş oku, ekrana yankıla | — | AL = ASCII |
02h | Karakter yaz | DL = karakter | AL = DL |
09h | Dizge yaz | DS:DX = '$' ile biten dizge | — |
0Ah | Satır oku (arabellekli) | DS:DX = arabellek | arabellek dolar |
4Ch | Programı sonlandır | AL = dönüş kodu | — |
MOV AH, 2 ; karakter yaz MOV DL, '*' INT 21h ; ekranda: *
MOV AH, 9 ; dizge yaz LEA DX, msg INT 21h msg DB 'Merhaba$'
INT 21h: DOS
INT 10h/0Eh mi, INT 21h/02h mi?
- Karakter AL'de.
- Doğrudan video BIOS'u; DOS gerekmez.
- Açılış (boot) kodunda da çalışır.
- Renk (grafik kipte BL) verilebilir.
- Karakter DL'de.
- DOS çağrısı; çıktı yönlendirilebilir (dosyaya, yazıcıya).
- Dönüşte AL = DL olur.
- Ctrl+Break denetimi yapılır.
Örnek Program
Toplama, Çıkarma ve Sonucu Yazdırma
org 100h mov al, 5 ; bin=00000101b mov bl, 10 ; hex=0ah or bin=00001010b ; 5 + 10 = 15 (decimal), 0fh, 00001111b add bl, al ; 15 - 1 = 14 (decimal), 0eh, 00001110b sub bl, 1 mov cx, 8 ; sonucu ikilik tabanda yazdır
print: mov ah, 2 ; yazdırma fonksiyonu mov dl, '0' test bl, 10000000b ; ilk biti test et jz zero mov dl, '1' zero: int 21h shl bl, 1 loop print ; b (binary suffix) yazdır mov dl, 'b' int 21h ; klavye tuşu basılmasını bekle mov ah, 0 int 16h ret
- 5 + 10 − 1 = 14 = 0Eh hesaplanır; sonuç BL'dedir.
- Döngü 8 kez (CX = 8) çalışır: her turda BL'nin en anlamlı biti (MSB) test edilir, '0' ya da '1' yazılır, BL bir sola kaydırılır.
- En sonda 'b' eki yazılır ve bir tuşa basılması beklenir. Beklenen çıktı: 00001110b.
Örnek Program
TEST ve SHL ile Bit Okuma
TEST BL, 10000000b: BL ile maske VE'lenir ama BL değişmez. Sonuç 0 ise bit 7 = 0 → ZF = 1, JZ atlar.
SHL BL, 1: tüm bitler bir sola kayar; çıkan bit 7 CF'ye gider, bit 0'a 0 girer. Bir sonraki bit, test edilecek konuma (bit 7) gelir.
8 tur sonunda BL'nin bitleri MSB'den LSB'ye sırayla yazılmış olur: 00001110, ardından b.
SHL BL,1 ardından JC ile CF'ye bakmak. Ancak bu sıralamada kaydırma, yazdırmadan önce yapılmalıdır.Örnek Program · Kodu adım adım çalıştır
Kod İzleme (1/2): Hesaplama
AL = 5 = 05h = 00000101b. MOV bayrakları etkilemez.
BL = 10 = 0Ah = 00001010b.
ADD BL, AL: BL = 0Ah + 05h = 0Fh (15). Taşma yok (CF = 0), sonuçta dört 1 biti var → PF = 1.
SUB BL, 1: BL = 0Eh (14) = 00001110b. Üç 1 biti → PF = 0. Ödünç yok: CF = 0.
CX = 8: LOOP sayacı, her bit için bir tur.
org 100h mov al, 5 ; bin=00000101b mov bl, 10 ; hex=0ah or bin=00001010b ; 5 + 10 = 15 (decimal), 0fh, 00001111b add bl, al ; 15 - 1 = 14 (decimal), 0eh, 00001110b sub bl, 1 mov cx, 8 ; sonucu ikilik tabanda yazdır
Örnek Program · Kodu adım adım çalıştır
Kod İzleme (2/2): İkilik Yazdırma
Tur 1: AH = 2 (DOS karakter yaz).
Varsayılan karakter DL = '0' (30h).
TEST: bit 7 = 0 → ZF = 1, CF = 0.
ZF = 1 → JZ zero atlar; DL '0' kalır.
INT 21h: DL'deki '0' yazılır.
SHL BL,1: BL = 1Ch, çıkan bit CF = 0.
LOOP: CX = 7 ≠ 0 → print'e dön.
Tur 2 (özet): bit = 0, '0' yazıldı, BL = 38h. LOOP: CX = 6 ≠ 0 → print'e dön.
Tur 3 (özet): bit = 0, '0' yazıldı, BL = 70h. LOOP: CX = 5 ≠ 0 → print'e dön.
Tur 4 (özet): bit = 0, '0' yazıldı, BL = E0h. LOOP: CX = 4 ≠ 0 → print'e dön.
Tur 5: AH = 2 (DOS karakter yaz).
Varsayılan karakter DL = '0' (30h).
TEST: bit 7 = 1 → ZF = 0, CF = 0.
ZF = 0 → JZ atlamaz, sıradaki komut çalışır.
DL = '1' (31h).
INT 21h: DL'deki '1' yazılır.
SHL BL,1: BL = C0h, çıkan bit CF = 1.
LOOP: CX = 3 ≠ 0 → print'e dön.
Tur 6 (özet): bit = 1, '1' yazıldı, BL = 80h. LOOP: CX = 2 ≠ 0 → print'e dön.
Tur 7 (özet): bit = 1, '1' yazıldı, BL = 00h. LOOP: CX = 1 ≠ 0 → print'e dön.
Tur 8 (özet): bit = 0, '0' yazıldı, BL = 00h. LOOP: CX = 0 → döngü biter.
DL = 'b'. AH hâlâ 2.
INT 21h: 'b' eki yazılır.
AH = 0: tuş bekleme.
INT 16h: kullanıcı bir tuşa basana kadar beklenir (çıktı okunabilsin).
RET: program biter. Ekranda 00001110b.
print: mov ah, 2 ; yazdırma fonksiyonu mov dl, '0' test bl, 10000000b ; ilk biti test et jz zero mov dl, '1' zero: int 21h shl bl, 1 loop print ; b (binary suffix) yazdır mov dl, 'b' int 21h ; klavye tuşu basılmasını bekle mov ah, 0 int 16h ret
Örnek Program
Ekran Çıktısı ve Notlar
emu8086 ekran penceresi (80×25)
- Sayının içi zaten ikiliktir; yazdırmak, her biti '0'/'1' karakterine çevirmektir.
TESTsonucu saklamadığı için BL bozulmaz; bozan yalnızcaSHL'dir (bilerek).LOOPCX'i azaltır; döngü içinde CX başka amaçla kullanılmamalıdır.INT 21h/02hAL'yi değiştirir (AL = DL); AL'de saklanan bir değer varsa önce korunmalıdır.
Donanım Kesmeleri
8086'nın Kesme Pinleri
Maskelenebilir istek. IF = 1 ise kabul edilir. STI IF'yi 1, CLI 0 yapar.
Kesme onayı (çıkış). İki darbe gönderilir; ikincisinde denetleyici tip numarasını D0–D7'ye koyar.
Maskelenemez; yükselen kenarla tetiklenir, her zaman INT 2 olarak işlenir.
Donanım Kesmeleri
INTR Kabul Süreci
09h) veri yoluna koyar.INT n ile aynıdır: FLAGS, CS, IP yığına; IF = TF = 0; CS:IP ← [n×4].IRET ile döner.Donanım Kesmeleri
Öncelik ve PC Kesme Haritası
8086 öncelik sırası
| Sıra | Kaynak |
|---|---|
| 1 (en yüksek) | Bölme hatası, INT n, INTO |
| 2 | NMI |
| 3 | INTR |
| 4 (en düşük) | Tek adım (TF) |
Aynı anda birden çok istek varsa, yüksek öncelikli olan önce hizmet görür.
IBM PC donanım kesmeleri
| IRQ | Aygıt | Tip |
|---|---|---|
| 0 | Zamanlayıcı (18,2 Hz) | 08h |
| 1 | Klavye | 09h |
| 3 / 4 | Seri portlar | 0Bh / 0Ch |
| 6 | Disket | 0Eh |
| 7 | Yazıcı | 0Fh |
INT 09h çalışır ve tuşu arabelleğe koyar; programın çağırdığı INT 16h bu arabellekten okur.Donanım Kesmeleri
Kendi Kesme Yordamımız
org 100h mov ax, 0 mov es, ax ; ES = 0: IVT kesimi cli ; kesmeleri kapat mov word ptr es:[90h*4], offset isr ; IP mov word ptr es:[90h*4+2], cs ; CS sti ; kesmeleri aç int 90h ; kendi kesmemiz ret isr: mov ah, 0Eh mov al, '*' int 10h iret ; RET değil!
- Kullanılmayan bir tip seçilir: 90h. Vektörü
90h × 4 = 240hadresindedir. - IVT 0000 kesimindedir; ES = 0 yapılır.
- Vektör yazılırken
CLI/STIile korunur: yarım yazılmış vektörle kesme gelmemelidir. INT 90hekrana * yazar ve program devam eder.- DOS altında
INT 21h, AH =25h(vektör ata) /35h(vektör oku) daha güvenli yoldur.
Özet
Özet
İşlemci işini bırakır, ISR'yi çalıştırır, IRET ile kaldığı yere döner.
0000:0000–03FF, 256 × 4 bayt. Tip n → adres n × 4 (IP), n × 4 + 2 (CS).
FLAGS, CS, IP yığına (SP −6), IF = TF = 0, CS:IP ← vektör.
AH ile seçilir; parametreler diğer yazmaçlarda.
INT 10h/0Eh AL'yi yazar; INT 16h/00h tuş bekler (AL = ASCII, AH = tarama kodu).
INT 21h/02h DL'yi yazar; 09h '$' ile biten dizgeyi yazar; 4Ch çıkar.
Özet
Alıştırmalar
INT 13hvektörü hangi fiziksel adreslerde bulunur?INT 21hçalışmadan önce SP = FFFEh ise ISR içindeyken SP kaçtır? Yığında ne vardır?- Ekrana Hello yazdırmak için kesmeler bölümündeki programı tamamlayın.
- Ekrana
INT 21h/09hile “Merhaba Dünya” yazan programı yazın. - Basılan tuşun ASCII kodunu ikilik olarak yazan bir program tasarlayın.
- ISR'nin
IRETyerineRETile bitmesi ne gibi sorunlara yol açar?
İpuçları / cevaplar
- 13h × 4 = 4Ch →
0004Ch–0004Fh(IP: 4Ch–4Dh, CS: 4Eh–4Fh). - SP = FFF8h. [FFF8h] = dönüş IP'si, [FFFAh] = CS, [FFFCh] = FLAGS.
- Sona
MOV AL,'o'veINT 10heklenir. msg DB 'Merhaba Dünya$',LEA DX,msg,MOV AH,9,INT 21h; 'ü' için kod sayfası desteği gerekir.MOV AH,0 / INT 16h→MOV BL,AL, ardından örnek programdaki döngü (CX = 8).- FLAGS yığında kalır (SP 2 bayt kayar), IF = 0 olarak kalır, ilk
RET'te yanlış dönüş adresi alınabilir.
Özet
Kaynaklar
- A. S. Tanenbaum, Modern Operating Systems, 3. baskı, Pearson, 2008 (kaynak sunumda faydalanılmıştır).
- Intel, The 8086 Family User's Manual, 1979 — Interrupts bölümü.
- B. B. Brey, The Intel Microprocessors, 8. baskı, Pearson, 2009 — Bölüm 6 ve 12.
- emu8086 yardım belgeleri: “Interrupts” ve “Supported interrupts” sayfaları.
- R. Brown, Ralf Brown's Interrupt List (BIOS/DOS kesme başvurusu).