Bölüm 2: 8086 Pinler
Giriş
Öğrenme Çıktıları
8086'nın 40 pinini gruplarına ayırmak; aktif düşük/yüksek sinyalleri okumak.
Adres ve verinin aynı pinlerden nasıl geçtiğini, ALE ve adres kilitlerinin rolünü açıklamak.
T1–T4 durumlarında okuma ve yazma döngüsünü, bekleme durumunu (Tw) zamanlama diyagramından izlemek.
Minimum/maksimum mod farkını, 8284A, 8288 ve kesme mekanizmasını tanımak.
Genel Bakış
8086 Paketi
- Intel 8086, 16 bitlik HMOS mikroişlemcidir.
- 40 pinli DIP (dual in-line package) entegre devre olarak üretilir.
- Tek +5 V DC besleme ile çalışır (pin 40 = VCC, pin 1 ve 20 = GND).
- 20 hatlı adres yolu (A0–A19) ve 16 hatlı veri yolu (D0–D15).
- Adres yolu çoklamalı (multiplexed) çalışır: bir pin farklı zamanlarda farklı amaçla kullanılır.
- 16 düşük adres hattı (A0–A15) veri ile çoklanır → AD0–AD15.
- 4 yüksek adres hattı (A16–A19) durum bilgisi ile çoklanır → A16/S3 … A19/S6.
Adının sonunda ' (veri sayfasında üst çizgi) olan sinyal aktif düşüktür: işlevi 0 V'ta yapar. Ör. RD' = 0 → okuma.
MN/MX' gibi adlarda: 1 iken MN, 0 iken MX anlamı geçerlidir.
Yön: G = giriş, Ç = çıkış, G/Ç = çift yönlü.
Genel Bakış
Pin Diyagramı (Etkileşimli)
Genel Bakış
Yonganın İçi: Kalıp Fotoğrafı
- Silikon kalıp (die), paketin ortasında yer alır; kenarlardaki bağlantı pedleri ince tellerle 40 pine bağlanır.
- Sol kenardaki AD yolu pedleri, adres/veri pinlerine giden hatlardır.
- Sol tarafta 16 bitlik yazmaçlar, ALU ve önden getirme kuyruğu yazmaçları; sağ altta komutları yürüten mikrokod ROM'u görülür.
- Yaklaşık 29 000 transistör, 3 µm HMOS süreci.

Fotoğraf: Ken Shirriff (righto.com), işlevsel bloklar işaretli.
Genel Bakış
Neden Karmaşık Pinler?
Mikroişlemciler bellek ve G/Ç aygıtlarına veri yolu ve adres yolu üzerinden bağlanır. 8086'da bu bağlantı iki nedenle karmaşıktır:
- 20 adres + 16 veri + ~20 kontrol + güç/saat ≈ 60'tan fazla sinyal gerekir.
- Çözüm: adres, veri ve durum bilgisi aynı pinler üzerinden, farklı zamanlarda iletilir (zaman paylaşımlı çoklama).
- Kesim yazmaçlarıyla üretilen adres 20 bittir; veri yolu yalnızca 16 bittir.
- Fazladan 4 adres biti (A16–A19) kendi pinlerini durum sinyalleriyle (S3–S6) paylaşır.
Genel Bakış
Pin Grupları
| Grup | Pinler | Not |
|---|---|---|
| Güç | VCC (40), GND (1, 20) | +5 V ± %10 |
| Saat ve sıfırlama | CLK (19), RESET (21), READY (22) | 8284A saat üretecinden gelir |
| Adres/veri | AD0–AD15 (2–16, 39) | T1'de adres, sonra veri |
| Adres/durum | A16/S3–A19/S6 (38–35), BHE'/S7 (34) | T1'de adres, sonra durum |
| Kesme | NMI (17), INTR (18), INTA' (24, min) | donanım kesmeleri |
| Ortak kontrol | RD' (32), TEST' (23), MN/MX' (33) | her iki modda aynı |
| Moda bağlı | 24–31 | min: INTA', ALE, DEN', DT/R', M/IO', WR', HLDA, HOLD maks: QS1, QS0, S0', S1', S2', LOCK', RQ'/GT1', RQ'/GT0' |
Genel Bakış
Minimum ve Maksimum Mod
- MN/MX' = 1 (VCC) → minimum mod: tek işlemcili küçük sistem; kontrol sinyallerini 8086 kendisi üretir.
- MN/MX' = 0 (GND) → maksimum mod: çok işlemcili/yardımcı işlemcili (8087) sistem; kontrol sinyallerini 8288 yol denetleyicisi üretir, açılan pinler durum ve yol arbitrasyonu için kullanılır.
- Mod donanımla, pin sabit bağlanarak seçilir; çalışırken değişmez.
| Pin | Minimum | Maksimum |
|---|---|---|
| 24 | INTA' | QS1 |
| 25 | ALE | QS0 |
| 26 | DEN' | S0' |
| 27 | DT/R' | S1' |
| 28 | M/IO' | S2' |
| 29 | WR' | LOCK' |
| 30 | HLDA | RQ'/GT1' |
| 31 | HOLD | RQ'/GT0' |
Adres ve Veri
Adres/Veri Yolu Pinleri
- Düşük 16 adres hattıdır; veri hattı ile çoklanır.
- Bellek adresi taşırken A ile gösterilir: A0–A15 (T1).
- Veri taşırken D ile: D0–D7, D8–D15 ya da D0–D15 (T2–T4).
- Çift yönlüdür (yazmada çıkış, okumada giriş); gerekirse yüzer (float, yüksek empedans) duruma geçer.
- Yüksek 4 adres hattıdır; durum sinyalleri ile çoklanır.
- T1'de A16–A19 (bellek erişiminde), T2–T4'te S3–S6.
- G/Ç erişiminde T1 sırasında 0'dır (G/Ç adresi 16 bit).
- S3, S4: hangi kesimin kullanıldığı; S5: IF bayrağı; S6: her zaman 0.
Adres ve Veri
Çoklamayı Çözmek: ALE, Kilit ve Tampon
AD0–AD15 pinleri hem adres hem veri taşır. Sistemin geri kalanı ayrık ve kararlı bir adres yolu ile veri yolu ister.
T1: 8086 adresi AD pinlerine koyar ve ALE'yi 1 yapar. ALE'nin düşen kenarında 8282 kilidi adresi yakalar.
T2–T4: aynı pinler artık veri taşır. DEN' = 0 alıcı-vericiyi açar, DT/R' yönü seçer (1: CPU → bellek, 0: bellek → CPU).
Kilit adresi tüm döngü boyunca bellek ve G/Ç'ye sabit sunar. A16–A19/BHE' için de ayrı bir kilit kullanılır (toplam 3 adet 8282).
Adres ve Veri
Tamponlu ve Kilitli Sistem
Tamponlar (buffer) hem çoklamayı çözer hem de sürme gücü sağlar: 8086'nın pinleri ancak sınırlı sayıda yükü sürebilir; büyük sistemlerde tüm yollar tamponlanır.
Adres ve Veri
BHE' ve A0: Bellek Bankaları
| BHE' | A0 | Aktarım |
|---|---|---|
| 0 | 0 | tüm kelime, D0–D15 (çift adres) |
| 0 | 1 | üst bayt, D8–D15 (tek adres) |
| 1 | 0 | alt bayt, D0–D7 (çift adres) |
| 1 | 1 | yok |
Adres ve Veri · Kodu adım adım çalıştır
Kod İzleme: Hizalı ve Hizasız Erişim
AX ← 2000h. Yalnızca komut getirme döngüleri; veri erişimi yok.
DS ← 2000h: veri kesimi 20000h'de başlar.
AX ← 1234h (AH=12h, AL=34h).
FA = 20100h çift: BHE'=0, A0=0 → iki banka birden. Kelime tek döngüde yazılır; AL çift adrese (34h), AH tek adrese (12h).
AX ← ABCDh.
FA = 20101h tek. 1. döngü: BHE'=0, A0=1 → yalnız yüksek banka. AL'deki CDh D8–D15 üzerinden 20101h'ye yazılır.
2. döngü: FA = 20102h, BHE'=1, A0=0 → yalnız düşük banka. AH'deki ABh D0–D7 üzerinden yazılır. Hizasız kelime = 2 döngü.
Bayt okuma, çift adres: BHE'=1, A0=0 → D0–D7. AL ← 34h, AH değişmez → AX = AB34h.
Hizasız kelime okuma. 1. döngü: 20101h'deki CDh D8–D15'ten gelir; işlemci onu BL'ye yerleştirir.
2. döngü: 20102h'deki ABh D0–D7'den gelir → BH. Sonuç BX = ABCDh (küçük uçlu).
mov ax, 2000h mov ds, ax mov ax, 1234h mov [0100h], ax ; çift adres mov ax, 0ABCDh mov [0101h], ax ; tek adres mov al, [0100h] ; bayt mov bx, [0101h] ; tek adres
Yol Döngüleri
Yol Döngüsü ve T Durumları
- İşlemcinin bellek veya G/Ç ile her veri alışverişi bir yol döngüsüdür (bus cycle).
- Bir yol döngüsü en az dört saat çevrimi sürer: T1, T2, T3, T4 (T durumları).
- Pinlerin işlevi T durumuna göre değişir: T1'de adres, T2–T4'te veri/durum.
- Yavaş bellek için T3 ile T4 arasına bekleme durumları (Tw) eklenir.
- İşlemci yolu kullanmadığı çevrimler boşta durumlarıdır (Ti).
T = 1 / 5 MHz = 200 ns
Yol döngüsü = 4 × 200 = 800 ns
En fazla 1 / 800 ns = 1,25 milyon yol döngüsü/s
Kelime başına 2 bayt → ≈ 2,5 MB/s yol bant genişliği
Yol Döngüleri
Yazma Yol Döngüsü
Yazma döngüsü dört T durumundan oluşur. Saat düşen kenarı her T durumunun başıdır.
T1: yazılacak hedef adres AD ve A pinlerine konur; ALE ile dış kilitlere alınır.
T2: AD pinleri artık yazılacak veriyi taşır; WR' = 0 olur.
T3: veri ve WR' kararlı kalır; bellek veriyi yakalar (READY = 0 ise burada Tw eklenir).
T4: WR' = 1'e döner, yükselen kenarında bellek yazmayı tamamlar; yol bir sonraki döngüye hazırlanır.
Yazmada adres T1'de, veri T2–T4 boyunca aynı pinlerde: arada bekleme yoktur, çünkü verinin kaynağı işlemcinin kendisidir.
Yol Döngüleri
Okuma Yol Döngüsü
Okuma döngüsü de dört T durumudur, ama AD pinlerinde adres ile veri arasında bir boşluk (float) vardır.
T1: yazmadaki gibi okunacak adres pinlere konur ve kilitlenir.
T2: 8086 AD çıkış sürücülerini üç durumlu (tri-state, yüksek empedans) yapar → bellek yolu sürebilir. RD' = 0.
T3: bellek (veya G/Ç aygıtı) istenen veriyi veri yoluna koyar.
T4: T4'ün başında 8086 veriyi pinlerden okur (örnekler); RD' = 1, bellek yolu bırakır.
T2'deki yüzer durum “yol dönüşü” (bus turnaround) içindir: işlemci adresi sürmeyi bırakmadan bellek veriyi sürmeye başlarsa iki çıkış çakışır.
Yol Döngüleri
Okuma İçin Yol Zamanlaması
Minimum modda bir bellek okuma döngüsünde tüm kontrol sinyalleri.
T1: M/IO' = 1 (bellek), adres pinlerde; ALE darbesi adresi kilitler; DT/R' = 0 (alma yönü).
T2: AD yüzer, A19–A16 yerine S6–S3; RD' = 0 ve ardından DEN' = 0 → alıcı-verici açılır.
T3: bellek veriyi koyar. İşlemci T3'ün başında READY'yi örnekler: 1 ise T4'e geçer.
T4: veri örneklenir; RD', DEN', DT/R' pasife döner; bir sonraki döngü için M/IO' değişebilir.
Yol Döngüleri
READY ve Bekleme Durumu (Tw)
Yavaş bir bellek, verisini T3'e kadar hazırlayamıyorsa READY sinyalini 0 yapar.
T3'te READY = 0 görülür → işlemci T4'e geçmez, bir Tw (bekleme) durumu ekler. Tüm sinyaller olduğu gibi kalır.
Tw'nin sonunda READY tekrar örneklenir; bu kez 1 → bellek hazır. Gerekirse birden fazla Tw eklenebilir.
T4: veri okunur. Döngü 5 × 200 = 1000 ns sürdü (bir bekleme durumu = +200 ns).
READY, 8284A'nın RDY girişinden saate senkronlanarak 8086'ya verilir (aktif yüksek).
Durum Pinleri
S2', S1', S0' Durum Pinleri
- Maksimum modda (pin 26–28) yol döngüsünün türünü kodlar.
- T4 (önceki döngü), T1 ve T2 sırasında aktiftir.
- T3'te veya READY = 1 olan Tw'de pasif duruma (1, 1, 1) döner.
- 8288 yol denetleyicisi bunları çözerek bellek ve G/Ç erişim kontrol sinyallerini (MRDC', MWTC', IORC' …) üretir.
- T4'te pasif durumdan herhangi bir koda geçiş, yeni bir yol döngüsünün başladığını gösterir.
Düşük (low) sinyal = 0 ≈ 0 V
Yüksek (high) sinyal = 1 ≈ +5 V
Durum pinleri aktif düşüktür; “111 = pasif” bu yüzden “hiçbir şey yapılmıyor” anlamına gelir.
Durum Pinleri
S2' S1' S0' Kodları
| S2' | S1' | S0' | Döngü | 8288 komutu |
|---|---|---|---|---|
| 0 | 0 | 0 | Kesme kabul (interrupt acknowledge) | INTA' |
| 0 | 0 | 1 | G/Ç portu oku | IORC' |
| 0 | 1 | 0 | G/Ç portuna yaz | IOWC', AIOWC' |
| 0 | 1 | 1 | Durdurma (HLT) | yok |
| 1 | 0 | 0 | Kod erişimi (komut getirme) | MRDC' |
| 1 | 0 | 1 | Bellek oku | MRDC' |
| 1 | 1 | 0 | Belleğe yaz | MWTC', AMWC' |
| 1 | 1 | 1 | Pasif | yok |
S2' = 1 → bellek, S2' = 0 → G/Ç / özel.
S1' ve S0': 01 → okuma, 10 → yazma.
Bu yüzden S2' minimum moddaki M/IO' ile, S1' DT/R' ile aynı pini paylaşır.
Durum Pinleri
S3–S6 ve BHE'/S7 Durum Bitleri
A16/S3, A17/S4, A18/S5, A19/S6: T1'den sonra adres yerine durum bitleri.
| S4 (A17) | S3 (A16) | Kullanılan kesim |
|---|---|---|
| 0 | 0 | ES (ek kesim) |
| 0 | 1 | SS (yığın) |
| 1 | 0 | CS veya kesim yok (G/Ç, kesme vektörü) |
| 1 | 1 | DS (veri) |
- S5 (A18): IF kesme bayrağının o anki değeri; her saat çevriminin başında güncellenir.
- S6 (A19): her zaman 0 (8086 yolu kullanıyor).
- S7 (BHE'): kullanılmayan yedek durum biti.
S3–S4, sistemin her kesim için ayrı 1 MB bellek bağlamasına olanak verir (ör. yığın ayrı bankada).
Durum Pinleri
Demo: Durum Kodu Çözücü
Pinlere tıklayarak 0/1 yap. 8288'in ve sistemin bu kodu nasıl yorumladığını gör.
Durum Pinleri
QS1, QS0: Kuyruk Durumu
- Maksimum modda (pin 24–25) önden getirme kuyruğunun durumunu dışarı bildirir.
- Kuyruk işlemini izleyen saat çevriminde geçerlidir.
- 8087 yardımcı işlemcisi bu pinlerle 8086'nın hangi komutu yürüttüğünü izler ve kendi komutlarını (ESC) yakalar.
| QS1 | QS0 | Durum |
|---|---|---|
| 0 | 0 | İşlem yok (kuyruk değişmedi) |
| 0 | 1 | Kuyruktan işlem kodunun ilk baytı alındı |
| 1 | 0 | Kuyruk boşaltıldı (dallanma) |
| 1 | 1 | Kuyruktan sonraki bayt alındı |
Kontrol Pinleri
RD', WR' ve M/IO'
- Çıkış, aktif düşük.
- İşlemcinin bellekten veya G/Ç'den okuma yaptığını bildirir.
- Okuma döngüsünün T2, T3 ve Tw'lerinde 0.
- Çıkış, aktif düşük; yazma döngüsünün T2, T3, Tw'lerinde 0.
- Bellek ve G/Ç erişimlerini ayırır.
- 1 → bellek işlemi (M aktif), 0 → G/Ç işlemi (IO' aktif).
- Önceki döngünün T4'ünde geçerli olur, döngü boyunca kalır.
- 8088'de ters kutupludur: IO/M'.
| M/IO' | RD' | WR' | İşlem | Örnek komut |
|---|---|---|---|---|
| 1 | 0 | 1 | bellek okuma | MOV AL, [BX] |
| 1 | 1 | 0 | bellek yazma | MOV [BX], AL |
| 0 | 0 | 1 | G/Ç okuma | IN AL, 60h |
| 0 | 1 | 0 | G/Ç yazma | OUT 43h, AL |
Kontrol Pinleri
DT/R' ve DEN'
- 8286/8287 veri yolu alıcı-vericisi (transceiver) kullanan sistemlerde gereklidir.
- Alıcı-verici: verici ve alıcının tek pakette birleşimi.
- 1 → veri işlemciden dışarı (yazma), 0 → dışarıdan işlemciye (okuma).
- Veri akışının yönünü alıcı-vericinin T girişi belirler.
- Alıcı-vericiye çıkış etkinleştirme (OE') olarak bağlanır.
- Bellek ve G/Ç erişimlerinde ve INTA döngülerinde aktif düşük.
- T1'de 1 kalır: AD pinlerindeki adres veri yoluna sızmasın.
Düzeltme: kaynakta “DT/R” yazılmıştı; doğru gösterim DT/R' (R aktif düşük).
Kontrol Pinleri
HOLD / HLDA (Minimum Mod)
Başka bir yol yöneticisi (ör. 8237 DMA denetleyicisi) yerel yolu kullanmak istiyor.
HOLD = 1 (aktif yüksek). İşlemci içinde bulunduğu yol döngüsünü bitirir.
T4 veya Ti'nin ortasında HLDA = 1 ile onay verilir; adres, veri ve kontrol pinleri yüzer duruma geçer.
DMA denetleyicisi yolu kullanır. 8086 kuyruktaki komutları yürütmeye devam edebilir, yol gerektiren işte bekler.
HOLD = 0 → işlemci HLDA'yı düşürür ve yolu geri alarak yeni bir döngüye başlar.
Düzeltme: kaynakta “T4 veya T1 saat döngüsünün ortasında” yazıyordu; veri sayfasına göre HLDA, T4 veya Ti (boşta) çevriminin ortasında verilir.
Kontrol Pinleri
RQ'/GT0', RQ'/GT1' ve LOCK'
- Diğer yerel yol yöneticileri (ör. 8087) tarafından kullanılır.
- İşlemciyi döngü sonunda yerel yolu bırakmaya zorlar.
- Her pin çift yönlüdür: tek bir hat üzerinde darbe dizisi → istek (RQ), bağış (GT), bırakma.
- RQ'/GT0', RQ'/GT1' pininden daha yüksek önceliklidir.
- Minimum moddaki HOLD/HLDA'nın maksimum mod karşılığıdır.
- Aktif düşük çıkış.
- Aktifken diğer yol yöneticilerinin sistem yolunu almasına izin verilmez.
LOCKönekli komut boyunca (komut tamamlanana kadar) aktiftir.- Çok işlemcili sistemlerde semafor için:
LOCK XCHG AL, [BX]ile oku-değiştir-yaz bölünmez olur. - INTA döngüleri sırasında da otomatik olarak aktiftir.
Kontrol Pinleri
TEST' ve CLK
WAITkomutu tarafından sınanır.- TEST' = 0 ise yürütme devam eder; değilse işlemci boşta bekler ve pini tekrar sınar.
- Her saat çevriminin yükselen kenarında içeride senkronlanır.
- Tipik kullanım: 8087'nin BUSY çıkışına bağlanır;
FWAITile 8087'nin işini bitirmesi beklenir.
CLK (pin 19): işlemci ve yol denetimi için temel zamanlamayı sağlar. %33 görev çevrimli (duty cycle) asimetrik kare dalgadır.
8086: 5 MHz, 8086-2: 8 MHz, 8086-1: 10 MHz.
Kontrol Pinleri
RESET, VCC ve GND
- RESET (pin 21): işlemcinin o anki faaliyetini hemen sonlandırır. Sinyal en az dört saat çevrimi 1 kalmalıdır (açılışta en az 50 µs). Düştüğünde işlemci yeniden başlar.
- VCC (pin 40): +5 V DC besleme.
- GND (pin 1, 20): toprak. İki toprak pini, yüksek akımlı anahtarlamada gürültüyü azaltır.
| Sıfırlama sonrası | Değer |
|---|---|
| CS | FFFFh |
| IP | 0000h |
| DS, SS, ES | 0000h |
| FLAGS | temizlenir (IF = 0: kesmeler kapalı) |
| Kuyruk | boş |
| İlk komut adresi | FFFF0h + 0000h = FFFF0h |
JMP bulunur.Kontrol Pinleri
8284A Saat Üreteci
- Kristal frekansını 3'e böler: 15 MHz → 5 MHz CLK, %33 görev çevrimi.
- READY ve RESET girişlerini saate senkronlar; RES' girişindeki Schmitt tetikleyici, RC devresinden gelen yavaş yükselen gerilimi temiz bir RESET'e çevirir.
Kontrol Pinleri
MN/MX' ve Moda Göre Pinler
- ALE (25): adres kilidi etkinleştirme; T1'de aktif yüksek darbe, 8282/8283 kilitlerini yükler. ALE hiçbir zaman yüzer duruma geçmez.
- INTA' (24): kesme kabul.
- DEN', DT/R', M/IO', WR': alıcı-verici ve bellek/G-Ç kontrolü.
- HOLD, HLDA: yol devri (DMA).
- S2', S1', S0': döngü türü → 8288 kontrol sinyallerini üretir.
- QS1, QS0: kuyruk durumu (8087 için).
- LOCK': yolu kilitler.
- RQ'/GT0', RQ'/GT1': yol isteği/bağışı.
Düzeltme: kaynaktaki “ALE sinyali her zaman bir tam sayıdır” ifadesi veri sayfasındaki “ALE is never floated” (ALE asla yüzer duruma geçmez) cümlesinin hatalı çevirisidir.
Maksimum Mod
8288 Yol Denetleyicisi
- Maksimum modda 8086'nın S2'–S0' kodunu çözer.
- Komutlar: MRDC' bellek oku, MWTC' bellek yaz, IORC'/IOWC' G/Ç oku/yaz, INTA' kesme kabul. “A” ile başlayanlar (AMWC', AIOWC') bir saat önce başlayan “ileri” yazma sinyalleridir.
- Kontrol: ALE, DEN, DT/R' artık 8288'den gelir (DEN burada aktif yüksek).
- Pinleri boşalan 8086 bunları QS, LOCK', RQ'/GT' için kullanır.
Maksimum Mod
Maksimum Mod 8086 Sistemi
8284A saati, 8288 komutları ve ALE/DEN/DT/R' sinyallerini, kilitler adres yolunu, alıcı-vericiler veri yolunu, 8259A kesme denetleyicisi de 8 donanım kesmesini (IRQ0–7) INTR'ye bağlar.
Kesmeler
INTR, NMI ve INTA'
- Seviye tetiklemeli, aktif yüksek giriş.
- Her komutun son saat çevriminde örneklenir.
- IF = 1 ise kabul edilir (maskelenebilir: CLI ile kapatılır).
- Kabulde işlemci kesme kabul döngüsüne girer.
- İçeride senkronlanır.
- Kenar tetiklemeli (0 → 1 geçişi).
- Her zaman tip 2 kesmeye yol açar; vektör tablosunda gösterilen yordam yürütülür.
- Yazılımla (IF) maskelenemez.
- Kesme o anki komutun sonunda başlar.
- Kullanım: güç kesintisi, bellek eşlik hatası.
- Aktif düşük çıkış.
- Kesme kabul döngüsünün T2, T3 ve Tw'lerinde 0.
- İki ardışık INTA' darbesi üretilir; ikincisinde kesme denetleyicisi tip numarasını D0–D7'ye koyar.
- Maks. modda 8288 üretir.
Düzeltme: kaynakta INTR için “tetikleyici giriş” yazıyordu; INTR seviye tetiklemelidir, kenar tetiklemeli olan NMI'dır.
Kesmeler
Kesme Vektör Tablosu
Düzeltme: kaynak şekildeki “page fault, general protection” gibi girişler 80286/80386'ya aittir; 8086'da yalnızca tip 0–4 tanımlıdır, 5–31 Intel tarafından ayrılmıştır.
Kesmeler
Adım Adım: Vektör Arama
Yazılım kesmesi INT 21h (DOS servisleri) yürütülüyor. Tip numarası komutun içinde.
Vektörün adresi: tip × 4 = 21h × 4 = 84h. Tablo 0000h kesimindedir.
84h–85h: yordamın bağıl konumu. Küçük uçlu → IP = 1000h.
86h–87h: yordamın kesimi → CS = F000h.
İşlemci (bayraklar, CS, IP yığına atıldıktan sonra) F000:1000h = F1000h adresine dallanır.
Kesmeler
Donanım Kesmesi: INTA Döngüleri
INTR = 1 ve IF = 1 → o anki komut bitince işlemci iki kesme kabul döngüsü çalıştırır.
1. INTA' darbesi: kesme denetleyicisine (8259A) “isteğin kabul edildi” bildirilir. Veri yolu yüzer kalır.
2. INTA' darbesi: 8259A, kesme tip numarasını (ör. IRQ0 → 08h) D7–D0'a koyar; işlemci okur.
Maks. modda LOCK' iki döngü boyunca aktiftir: arada başka bir yöneticinin yolu alması engellenir.
Kesmeler · İşlemcinin yaptığı adımlar
Kesme Yanıt Sırası
Ana program çalışıyor; SS:SP = 0030:0100h olsun. INTR = 1 geldi, IF = 1 → komutun sonunda kabul.
İki INTA döngüsü; 8259A tip 08h'yi verir (IRQ0, zamanlayıcı).
PUSHF: SP − 2 = 00FEh, bayrak yazmacı yığına.
IF = 0 ve TF = 0: yordam başka INTR ile kesilmesin, adım adım çalışmasın.
PUSH CS: SP = 00FCh.
PUSH IP: SP = 00FAh. Dönüş adresi 1000:0120h güvende.
IP ← 08h × 4 = 20h adresindeki kelime (örnek: 0100h).
CS ← 22h adresindeki kelime (örnek: 2000h). Yordam 2000:0100h = 20100h'de başlar.
IRET: IP, CS ve FLAGS yığından geri alınır (SP = 0100h). IF yeniden 1, ana program kaldığı yerden sürer.
; o anki komut biter (CS:IP = 1000:0120h) INTA döngüsü ×2 ; tip = 08h PUSHF ; bayraklar yığına IF ← 0, TF ← 0 PUSH CS PUSH IP IP ← [0000:0020h] ; 08h × 4 CS ← [0000:0022h] ; ... kesme yordamı ... IRET ; IP, CS, FLAGS geri
Özet
Özet
AD0–AD15 T1'de adres, sonra veri; A16–A19 T1'de adres, sonra S3–S6. ALE + 8282 kilit adresi tutar.
T1 adres, T2 yön/komut, T3 veri, T4 bitiş. READY = 0 → Tw. 5 MHz'de 800 ns.
Çift/tek banka seçimi. Hizasız kelime iki döngü sürer.
MN/MX' = 1: kontrol sinyallerini 8086 üretir. 0: S2'–S0' → 8288.
8284A: 15 MHz / 3 = 5 MHz, %33 görev; RESET sonrası FFFF:0000h.
INTR seviye, IF ile maskelenir; NMI kenar, tip 2. Vektör = tip × 4.
Özet
Alıştırmalar
- 8086 8 MHz'de çalışıyor. Bekleme durumu olmayan bir yol döngüsü kaç ns sürer? İki Tw eklenirse?
- Bir çevre birimine yazılırken (OUT) M/IO', RD', WR', DT/R' pinleri hangi değerleri alır?
MOV [2003h], AXkaç yol döngüsü gerektirir? Her döngüde BHE' ve A0 ne olur?- S2' S1' S0' = 1 0 0 ile 1 0 1 arasındaki fark nedir? 8288 her ikisi için hangi komutu üretir?
- INT 10h yordamının adresi bellekte hangi baytlarda saklanır?
- Kristal 24 MHz olursa 8284A hangi CLK frekansını üretir? Bu, hangi 8086 sürümü için uygundur?
İpuçları / cevaplar
- T = 125 ns → 4 × 125 = 500 ns; iki Tw ile 6 × 125 = 750 ns.
- M/IO' = 0, RD' = 1, WR' = 0, DT/R' = 1 (işlemciden dışarı).
- Tek adres → 2 döngü: 2003h (BHE'=0, A0=1, AL → D8–D15), 2004h (BHE'=1, A0=0, AH → D0–D7).
- 100 kod (komut) getirme, 101 veri okuma; ikisinde de MRDC'. Fark, 8087 gibi izleyiciler içindir.
- 10h × 4 = 40h: 0000:0040h–0043h (IP: 40h–41h, CS: 42h–43h).
- 24 / 3 = 8 MHz → 8086-2.
Özet
Kaynaklar
- Intel, 8086 16-Bit HMOS Microprocessor veri sayfası (231455).
- Intel, 8284A Clock Generator and Driver, 8288 Bus Controller, 8282/8283 Octal Latch veri sayfaları.
- B. B. Brey, The Intel Microprocessors, 8. baskı, Pearson, 2009 (Bölüm 9: 8086/8088 donanım özellikleri).
- D. V. Hall, Microprocessors and Interfacing, 2. baskı, McGraw-Hill.
- K. Shirriff, 8086 kalıp fotoğrafları ve tersine mühendislik yazıları, righto.com.