Bölüm 12: Vize Çalışma Soruları
Giriş
Öğrenme Çıktıları
BIU, EU, kuyruk, yazmaçlar, bayraklar ve pinlerin görevlerini ayırt etmek.
Kesim × 10h + ofset ile fiziksel adresi bulmak; gereken adres hattı sayısını hesaplamak.
MOV, XCHG, LEA komutlarından sonra yazmaç ve bellek içeriklerini (little-endian) belirlemek.
Taban dönüşümü, 1'e/2'ye tümleyen; kesme vektörü ve emu8086.inc kullanımı.
Giriş
Bu Sunum Nasıl Kullanılır?
Soru 1 · Giriş ve Mimari
Soru 1: Mikroişlemci Türleri
Aşağıdakilerden hangisi bir mikroişlemci türüdür?
- CISC
- RISC
- EPIC
- Hepsi
Cevabı göster
Cevap: d) Hepsi
CISC (Complex Instruction Set Computer): çok sayıda, değişken uzunlukta, bellekte işlem yapabilen komut. 8086 bir CISC işlemcidir.
RISC (Reduced ISC): az sayıda, sabit uzunlukta, basit komut; boru hattına uygundur (ARM). EPIC (Explicitly Parallel Instruction Computing): paralel çalışacak komutları derleyici açıkça belirtir (Intel Itanium).
Soru 2 · Giriş ve Mimari
Soru 2: Mikroişlemcinin İçeriği
Aşağıdakilerden hangisi mikroişlemciler hakkında doğrudur?
- Dahili belleğe (RAM/ROM) sahiptir
- Arayüz (G/Ç) devreleri içerir
- ALU, CU ve yazmaçlar içerir
- Harvard mimarisini kullanır
Cevabı göster
Cevap: c) ALU, CU ve yazmaçlar içerir
Mikroişlemci yalnızca işlem birimidir: ALU (aritmetik-mantık), CU (denetim birimi) ve yazmaçlar. Bellek ve G/Ç arabirimleri yonganın dışındadır; bunlar da aynı yongadaysa ona mikrodenetleyici (MCU) denir.
8086 program ve veri için ortak bellek kullanan von Neumann yapısındadır; Harvard yapısı (ayrı program/veri belleği) daha çok mikrodenetleyici ve DSP'lerde görülür.
Soru 3 · Giriş ve Mimari
Soru 3: Bilgi Nerede Olmalı?
Mikroişlemci yalnızca ______ içinde bulunan bir bilgiyi işleyebilir.
- Program sayacı
- Durum (bayrak) yazmacı
- Ana bellek
- İkincil bellek
Cevabı göster
Cevap: c) Ana bellek
CPU, adres yolunun ulaşabildiği ana bellekteki (RAM/ROM) komut ve verileri getirebilir. Diskteki (ikincil bellek) bir program önce ana belleğe yüklenmelidir; bu işi yükleyici (loader) yapar.
Soru 4 · Giriş ve Mimari
Soru 4: Komut Döngüsü
Bir komutun getirilmesi ve yürütülmesi için gereken döngü hangisidir?
- Saat döngüsü
- Bellek döngüsü
- Makine döngüsü
- Komut döngüsü
Cevabı göster
Cevap: d) Komut döngüsü
Komut döngüsü = getir → çöz → yürüt. Bir komut döngüsü bir ya da daha çok makine (yol) döngüsünden, her makine döngüsü de birkaç saat döngüsünden (T durumu) oluşur.
8086'da bir yol döngüsü en az 4 saat döngüsüdür (T1–T4).
Soru 5 · Giriş ve Mimari
Soru 5: İşlem Kodu Getirme
Aşağıdaki yazmaçlardan hangisi işlem kodu (opcode) getirme işleminde kullanılmaz?
- Program sayacı
- Bellek adres yazmacı
- Bellek veri yazmacı
- Bayrak yazmacı
Cevabı göster
Cevap: d) Bayrak yazmacı
Getirmede adresi program sayacı (8086'da CS:IP) verir; adres, bellek adres yazmacı üzerinden adres yoluna çıkar, gelen bayt bellek veri yazmacı üzerinden komut yazmacına (8086'da kuyruğa) gider.
Bayraklar yürütmenin sonucunu tutar; getirme aşamasında rol almaz.
Soru 6 · Giriş ve Mimari
Soru 6: İşlem Sırası
Aşağıdakilerden hangisi bir mikroişlemcideki doğru işlem sırasıdır?
- Opcode getirme, bellek okuma, bellek yazma, G/Ç okuma, G/Ç yazma
- Opcode getirme, bellek yazma, bellek okuma, G/Ç okuma, G/Ç yazma
- G/Ç okuma, opcode getirme, bellek okuma, bellek yazma, G/Ç yazma
- G/Ç okuma, opcode getirme, bellek yazma, bellek okuma, G/Ç yazma
Cevabı göster
Cevap: a)
Her komut önce işlem kodunun getirilmesiyle başlar; bu yüzden c ve d hemen elenir. Sonra gerekirse işlenen bellekten okunur, sonuç belleğe yazılır.
G/Ç okuma/yazma yalnızca IN/OUT gibi komutlarda olur. Seçenekler, her komutta hepsinin oluştuğunu değil, makine döngüsü türlerinin olağan sıralamasını anlatır.
Soru 7 · Giriş ve Mimari
Soru 7: Program Sayacı ve Adres Yolu
Her bir komut için program sayacının içeriği kaç kez adres yoluna yerleştirilir?
- Bir kez
- İki kez
- İşlemcinin bellek kapasitesine bağlıdır
- Komutun uzunluğuna bağlıdır
Cevabı göster
Cevap: d) Komutun uzunluğuna bağlıdır
Basit (8 bitlik) bir işlemcide her okuma bir bayt getirir: 3 baytlık bir komut için PC üç kez adres yoluna konur ve her seferinde 1 artar.
8086'da BIU kuyruğu sözcük sözcük (2 bayt) önden doldurduğu için ilişki birebir değildir; ama getirme sayısı yine komutun uzunluğuna bağlıdır.
Soru 8 · Giriş ve Mimari
Soru 8: Program Sayacı Neden 16 Bit?
8085 mikroişlemcisinde program sayacı 16 bitlik bir yazmaçtır, çünkü:
- 16 biti aynı anda sayar
- 16 tane adres hattı bulunur
- Kullanıcının geçici olarak 16 bit veri saklamasını sağlar
- Aynı anda iki adet 8 bit veri getirmek zorundadır
Cevabı göster
Cevap: b) 16 tane adres hattı bulunur
PC bir bellek adresi tutar; adres yolunun tamamını sürebilmesi için adres hattı sayısı kadar bit gerekir: 216 = 64 KB.
8086'da IP yine 16 bittir ama adres yolu 20 bittir; aradaki fark kesim yazmacıyla kapatılır: fiziksel adres = CS × 10h + IP.
Soru 9 · Giriş ve Mimari
Soru 9: İşlem Kodu Sayısı
8 bitlik bir işlem kodu (opcode) ile en fazla kaç farklı işlem kodu tanımlanabilir?
- 246
- 278
- 250
- 256
Cevabı göster
Cevap: d) 256
8 bit → 28 = 256 farklı bit deseni; her desen bir işlem kodu olabilir. 278 bu sınırı aşar; 246 ve 250 ise sınırın altında kalır, "en fazla" değildir.
Not: Soru 8085'e özel sorulursa cevap a) 246 olur: 8085'te 74 komut ve 256 desenden 246'sı tanımlıdır.
Soru 10 · Giriş ve Mimari
Soru 10: BIU
8086 mimarisindeki BIU'nun (Bus Interface Unit) amacı nedir?
- CPU içindeki komutların yürütülmesini yönetir.
- CPU ile harici aygıtlar veya bellek arasında veri transferlerini yönetir.
- Veri üzerinde aritmetik ve mantıksal işlemler yapar.
- CPU içindeki komut akışını kontrol eder.
Cevabı göster
Cevap: b)
BIU dış dünyayla konuşan birimdir: fiziksel adresi hesaplar (kesim × 10h + ofset), komutları önden getirip 6 baytlık kuyruğa koyar, bellek/G/Ç okuma-yazma yapar. Kesim yazmaçları ve IP BIU'dadır.
a ve d EU'nun, c ALU'nun (EU içinde) işidir.
Soru 11 · Giriş ve Mimari
Soru 11: EU
Aşağıdaki ifadelerden hangisi 8086 mimarisindeki Yürütme Birimi'nin (EU) işlevini doğru tanımlar?
- CPU ile harici aygıtlar arasındaki veri transferlerini yönetir.
- Veri üzerinde aritmetik ve mantıksal işlemler gerçekleştirir.
- CPU içindeki komut akışını kontrol eder.
- CPU içindeki komutların yürütülmesini yönetir.
Cevabı göster
Cevap: d)
EU, kuyruktan aldığı komutu çözer ve yürütür; ALU, genel amaçlı yazmaçlar, bayrak yazmacı ve denetim birimi EU'nun içindedir. a BIU'nun işidir.
Aritmetik/mantık işlemlerini yapan ALU, EU'nun bir parçası olduğundan b kısmen doğrudur; ama EU'nun tamamını tanımlayan seçenek d'dir.
Soru 12 · Giriş ve Mimari
Soru 12: ALU
Aşağıdakilerden hangisi 8086 mimarisinde ALU'nun işlevini doğru tanımlar?
- Veri üzerinde aritmetik ve mantıksal işlemler gerçekleştirir.
- CPU içindeki komut akışını kontrol eder.
- CPU ile harici aygıtlar arasındaki veri transferlerini yönetir.
- Aritmetik işlemlerin sonuçlarını geçici olarak saklar.
Cevabı göster
Cevap: a)
ALU toplama, çıkarma, karşılaştırma, AND/OR/XOR/NOT, kaydırma gibi işlemleri yapar. Sonucu kendisi saklamaz (d yanlış): sonuç bir yazmaca veya belleğe yazılır, durum bilgisi bayraklara gider. b denetim biriminin, c BIU'nun işidir.
Soru 13 · Giriş ve Mimari
Soru 13: Komut Kuyruğu
8086 mimarisindeki komut kuyruğunun amacı nedir?
- Aritmetik ve mantıksal işlemlerin geçici sonuçlarını saklar.
- Bir sonraki işlenecek komutun adresini saklar.
- Komutlar arası boru hattı oluşturarak yürütme hızını artırır.
- CPU ve bellek arasında veri tamponlar.
Cevabı göster
Cevap: c)
8086'da 6 baytlık önden getirme kuyruğu vardır. EU bir komutu yürütürken BIU sonraki komut baytlarını getirir; getirme ve yürütme örtüşür (boru hattı).
Kuyruk adres değil komut baytlarını tutar (b yanlış). JMP/CALL gibi dallanmalarda kuyruk boşaltılır.
Soru 14 · Giriş ve Mimari
Soru 14: Komut Uzunluğu
8086 işlemcisinin bir komutu bellekte kaç bayt yer kaplar? Örnek vererek açıklayın.
Cevabı göster
Cevap: 1 ile 6 bayt arası (değişken uzunluk)
| Komut | Makine kodu | Bayt |
|---|---|---|
RET, PUSH AX | C3 · 50 | 1 |
MOV AX, BX | 89 D8 | 2 |
MOV AX, 1234h | B8 34 12 | 3 |
MOV WORD PTR [BX+SI+1234h], 5678h | C7 80 34 12 78 56 | 6 |
İşlem kodu + (gerekirse) ModR/M baytı + yer değiştirme (0–2 bayt) + sabit (0–2 bayt). Kesim öneki, REP, LOCK gibi önekler eklenince komut daha da uzayabilir.
Soru 15 · Diller ve Assembly
Soru 15: Makine Dili
Makine dili nasıl ve neden oluşturulur?
Cevabı göster
Cevap: İşlemcinin doğrudan çözebildiği ikili komut kodları
Neden: işlemcinin denetim birimi yalnızca kendi komut kümesindeki bit desenlerini (işlem kodu + işlenen/adres alanları) çözüp yürütebilir. Her işlemci ailesinin makine dili farklıdır.
Nasıl: programcı assembly ya da yüksek seviyeli dilde yazar. Assembler (çevirici) her assembly satırını karşılık gelen makine koduna, derleyici yüksek seviyeli kodu makine koduna çevirir; bağlayıcı (linker) parçaları birleştirir, yükleyici belleğe yerleştirir.
Örnek: MOV AL, 5 → B0 05h = 1011 0000 0000 0101b. Makine diliyle doğrudan yazmak mümkündür ama zor ve hataya açıktır.
Soru 16 · Diller ve Assembly
Soru 16: Yükleyici
Bir yükleyici (loader) mikroişlemci sisteminde ne yapar?
- Onaltılı kodu ikiliye dönüştürür
- Ondalığı ikiliye dönüştürür
- Program sayacının içeriğini 1 artırır
- Bir işlem kodunu çözümler
Cevabı göster
Cevap: a)
Yükleyicinin asıl görevi, çevrilmiş programı ana belleğe yerleştirip çalışmaya hazırlamaktır. Eğitim kitlerinde onaltılı (hex) biçimde girilen ya da dosyada duran kodu ikili baytlara çevirip belleğe yazan programa da yükleyici denir; a seçeneği bu anlamdadır.
c program sayacının (donanım) işidir, d komut çözücünün işidir.
Soru 17 · Diller ve Assembly
Soru 17: ORG Yönergesi
______ yönergesi, bir kesim/blok/kod için belirtilen adresten bellek ayırmaya başlamasını derleyiciye (assembler) bildirir.
- GROUP
- OFFSET
- ORG
- LABEL
Cevabı göster
Cevap: c) ORG
ORG 100h: .COM programlarında kod 100h ofsetinden başlar (ilk 256 bayt PSP içindir).
GROUP birden çok kesimi tek ad altında toplar; OFFSET bir etiketin kesim içi adresini verir; LABEL bir ada tür (BYTE, WORD, NEAR…) verir.
Soru 18 · Diller ve Assembly
Soru 18: MOV AX, BX
Aşağıdakilerden hangisi MOV AX, BX komutu hakkında doğrudur?
- AX'in içeriğini BX'e taşıma anlamına gelir.
- Anlık adresleme modunu kullanır.
- Bayrak yazmacını etkilemez.
- 2 baytlık bir komuttur.
Cevabı göster
Cevap: c) Bayrak yazmacını etkilemez (8086 için d de doğrudur)
Intel sözdiziminde hedef soldadır: BX → AX (a yanlış). İşlenenler yazmaç olduğundan yazmaç adresleme kullanılır (b yanlış). MOV hiçbir bayrağı değiştirmez (c doğru).
Dikkat: 8086'da MOV AX, BX = 89 D8h, yani 2 bayttır; d de doğrudur. 8085'teki MOV A, B ise 1 bayttır (78h); orada tek doğru c olurdu.
Soru 19 · Diller ve Assembly
Soru 19: MOV A, B
'A' ve 'B' yazmaçları sırasıyla 50H ve 40H içeriyor. MOV A, B komutundan sonra A ve B'nin içerikleri ne olur?
- 40H, 40H
- 50H, 40H
- 50H, 50H
- 60H, 40H
Cevabı göster
Cevap: a) 40H, 40H
MOV kopyalar: kaynak (B) hedefe (A) yazılır, kaynak değişmez.
8086 karşılığı: AL = 50h, BL = 40h iken MOV AL, BL → AL = 40h, BL = 40h.
Soru 20 · Diller ve Assembly
Soru 20: Bellekten Belleğe Taşıma
MOV komutu ile bellekten belleğe veri taşıma nasıl yapılır?
Cevabı göster
Cevap: Tek MOV ile yapılamaz; bir yazmaç üzerinden iki adımda yapılır
8086'da bir komutun iki işleneni birden bellek olamaz: MOV [hedef], [kaynak] geçersizdir. Veri önce bir yazmaca alınır, sonra yazmaçtan hedefe yazılır:
MOV AX, [kaynak] ; bellek -> yazmaç MOV [hedef], AX ; yazmaç -> bellek
İstisnalar: dizgi komutları (MOVSB/MOVSW: DS:SI → ES:DI) ve PUSH [m] / POP [m] bellekten belleğe aktarım yapabilir.
Soru 21 · Diller ve Assembly
Soru 21: Geçerli MOV
Aşağıdaki komutlardan hangisi geçerlidir?
MOV DS, 1234hMOV [BX], [SI]MOV AL, BXMOV ES, AX
Cevabı göster
Cevap: d) MOV ES, AX
a) Kesim yazmacına sabit doğrudan yüklenemez (önce MOV AX, 1234h, sonra MOV DS, AX). b) İki bellek işleneni. c) Boyut uyuşmazlığı: 8 bitlik AL'ye 16 bitlik BX yazılamaz.
d) Genel yazmaçtan kesim yazmacına MOV geçerlidir. Ayrıca CS hedef olamaz ve iki kesim yazmacı arasında doğrudan MOV yoktur.
Soru 22 · 8086 Pinleri
Soru 22: Pin Sayısı
8086 mikroişlemcisinin kaç adet pini vardır?
- 30
- 36
- 40
- 20
Cevabı göster
Cevap: c) 40
8086 40 pinli DIP kılıftadır (8085 de 40 pinlidir). 20 adres hattı, 16 veri hattı, güç, saat ve denetim pinleri 40 pine ancak çoklama sayesinde sığar.
Soru 23 · 8086 Pinleri
Soru 23: Çoklamanın Amacı
Adres ve veri yollarının çoklanması mikroişlemcilerde hangi amaçla kullanılır?
- İşlemcinin hızını artırmak için
- Pin sayısını artırmak için
- Pin sayısını azaltmak için
- İşlemin performansını artırmak için
Cevabı göster
Cevap: c) Pin sayısını azaltmak için
AD0–AD15 hatları T1'de adres, T2–T4'te veri taşır; A16/S3–A19/S6 adres ve durum bilgisini paylaşır.
Bedeli: adresin ALE ile dış mandala kilitlenmesi gerekir. Yani amaç hız değil, pin tasarrufudur.
Soru 24 · 8086 Pinleri
Soru 24: ALE
Adres yolu ile veri yolunu birbirinden ayırmak (çoklamayı çözmek) için hangi sinyal kullanılır?
- Öncelik kodlayıcı (Priority Encoder)
- Kod çözücü (Decoder)
- Adres mandalı etkinleştirme (ALE)
- Çoklama çözücü (Demultiplexer)
Cevabı göster
Cevap: c) ALE (Address Latch Enable)
ALE, her yol döngüsünün T1'inde 1 olur; dış mandal (8282 / 74LS373) bu sırada AD hatlarındaki adresi tutar. T2'den sonra aynı hatlar veri için serbest kalır, adres mandalın çıkışında durmaya devam eder.
Not: ALE yolları çoklamaz; çoklanmış AD hatlarını çözmek (demultiplexing) için kullanılır.
Soru 25 · 8086 Pinleri
Soru 25: Adres Yolu
Aşağıdakilerden hangisi 8086'nın adres yolu hakkında doğru değildir?
- 20 bit genişliğindedir.
- Çift yönlü bir yoldur.
- Alt 16 hattı veri yoluyla çoklanmıştır (AD0–AD15).
- 1 MB bellek adresleyebilir.
Cevabı göster
Cevap: b) Çift yönlü bir yoldur
Adresi yalnızca işlemci üretir: adres yolu tek yönlüdür (CPU → bellek/G/Ç). Veri yolu ise çift yönlüdür (okuma ve yazma).
Soru 26 · 8086 Pinleri
Soru 26: Güç Pini
8086 mikroişlemcisinde hangi pin, CPU'ya güç sağlamaktan sorumludur?
- VCC
- CLK
- RESET
- HOLD
Cevabı göster
Cevap: a) VCC
VCC (pin 40) +5 V besleme; GND pin 1 ve pin 20'dir. CLK saat (pin 19), RESET sıfırlama (pin 21), HOLD yol isteğidir (pin 31).
Soru 27 · 8086 Pinleri
Soru 27: RESET
8086 mikroişlemcisinde RESET pini ne amaçla kullanılır?
- CPU'ya güç sağlamak için
- Program sayacını sıfırlamak için
- Tüm sistemi sıfırlamak için
- Saat sinyalini kontrol etmek için
Cevabı göster
Cevap: c) İşlemciyi (ve ona bağlı sistemi) baştan başlatmak için
RESET en az 4 saat döngüsü 1 tutulunca: CS = FFFFh, IP = 0000h, DS = SS = ES = 0000h, bayraklar 0, kuyruk boş. İlk komut FFFF0h adresinden getirilir.
b de kısmen olur; ama RESET yalnız IP'yi değil işlemcinin tüm durumunu başlangıca getirir.
Soru 28 · 8086 Pinleri
Soru 28: HOLD
8086 mikroişlemcisinde HOLD pini ne işe yarar?
- CPU'yu geçici olarak duraklatmak için
- CPU'yu sıfırlamak için
- CPU'ya güç sağlamak için
- Veri transferini senkronize etmek için
Cevabı göster
Cevap: a)
HOLD (pin 31, minimum mod), DMA denetleyicisi gibi başka bir yol yöneticisinin yolu istemesidir. 8086 o anki yol döngüsünü bitirir, adres/veri/denetim hatlarını yüksek empedansa alır ve HLDA (pin 30) ile onay verir; HOLD düşünce yolu geri alır.
Yani CPU'nun yol erişimi geçici olarak durur (a). EU, kuyrukta komut varsa bu sırada yürütmeye devam edebilir.
Soru 29 · 8086 Pinleri
Soru 29: CLK
8086 mikroişlemcisinde CLK pini ne işe yarar?
- CPU'yu sıfırlamak için
- CPU'ya güç sağlamak için
- İç işlemleri senkronize etmek için
- Veri transferini etkinleştirmek için
Cevabı göster
Cevap: c)
CLK (pin 19) saat sinyalini 8284A saat üretecinden alır (%33 görev oranı; 8086 için 5 MHz, 8086-2 için 8 MHz). Tüm T durumları ve iç işlemler bu saate göre ilerler.
Soru 30 · 8086 Pinleri
Soru 30: DMA Pinleri
8086'da DMA işlemi için yolu isteyen ve onaylayan pinler hangisidir?
- DEN'
- DT/R'
- M/IO'
- HOLD / HLDA
Cevabı göster
Cevap: d) HOLD / HLDA
DT/R' (Data Transmit/Receive, pin 27) veri alıcı-vericilerinin (8286) yönünü belirler: 1 → işlemci veri gönderir (yazma), 0 → alır (okuma). DEN' (pin 26) alıcı-vericiyi etkinleştirir, M/IO' (pin 28) bellek/G/Ç ayrımını yapar.
DMA sırasında bu sinyaller yüksek empedansa alınır; yolu HOLD/HLDA el sıkışması devreder.
Soru 31 · 8086 Pinleri
Soru 31: Bellek mi, G/Ç mı?
8086 mikroişlemcisinde bellek ve G/Ç işlemleri arasındaki ayrımı yapmak için hangi pin kullanılır?
- IO/M (8086'da M/IO')
- DEN
- MN/MX
- DT/R
Cevabı göster
Cevap: a)
Minimum modda pin 28. 8086'da adı M/IO'dur: 1 → bellek, 0 → G/Ç. 8085 ve 8088'de aynı işlev ters kutupla IO/M' adını taşır (1 → G/Ç).
DEN' veri tamponunu açar, MN/MX' modu seçer, DT/R' veri yönünü belirler.
Soru 32 · 8086 Pinleri
Soru 32: Döngünün Başlangıcı
8086 mikroişlemcisinde bir komut (yol) döngüsünün başlangıcını belirtmek için hangi pin kullanılır?
- INTA
- RESET
- ALE
- CLK
Cevabı göster
Cevap: c) ALE
ALE her yol (makine) döngüsünün T1'inde 1 olur: adres yolda geçerlidir ve dış mandal tarafından tutulur. Bir komutun ilk baytı getirilirken de ilk yol döngüsü ALE ile başlar.
INTA' kesme onayı, RESET sıfırlama, CLK saattir. (Maksimum modda kuyruktan bir komutun ilk baytının alındığını QS1/QS0 pinleri gösterir.)
Soru 33 · 8086 Pinleri
Soru 33: Okuma Pini
8086 mikroişlemcisinde bellek okuma işlemini etkinleştirmek için hangi pin kullanılır?
- WR
- RD
- ALE
- DEN
Cevabı göster
Cevap: b) RD'
RD' (pin 32, aktif düşük) bellekten veya G/Ç'den okuma yapıldığını bildirir; hangisi olduğunu M/IO' belirler. WR' (pin 29) yazma, DEN' veri tamponunu etkinleştirme, ALE adres kilitlemedir.
Soru 34 · 8086 Pinleri
Soru 34: Maksimum Mod
8086 mimarisinde hangi işlem modu, işlemcinin harici yardımcı işlemcilerle çalışmasını sağlar?
- Minimum mod
- Maksimum mod
- Gerçek mod
- Korumalı mod
Cevabı göster
Cevap: b) Maksimum mod
MN/MX' (pin 33) = 0 → maksimum mod: denetim sinyallerini 8288 yol denetleyicisi üretir; RQ'/GT', LOCK' ve QS1/QS0 pinleri 8087 matematik işlemcisiyle (ve 8089 ile) birlikte çalışmayı sağlar. MN/MX' = 1 tek işlemcili minimum moddur.
Gerçek/korumalı mod 80286 ile gelen kavramlardır; 8086 yalnız gerçek modda çalışır.
Soru 35 · 8086 Pinleri
Soru 35: RD', WR', M/IO'
RD' (oku), WR' (yaz) ve M/IO' (bellek/G-Ç) sinyalleri 8086'nın hangi modunda denetimin merkezidir?
- Minimum mod
- Maksimum mod
- Uyum modu
- Denetim modu
Cevabı göster
Cevap: a) Minimum mod
Minimum modda (MN/MX' = 1) denetim sinyallerini doğrudan 8086 üretir: RD', WR', M/IO', DT/R', DEN', ALE, INTA'.
Maksimum modda bu pinlerin çoğu S2'–S0', RQ'/GT', LOCK', QS1/QS0 işlevlerini alır; bellek ve G/Ç komut sinyallerini (MRDC', MWTC', IORC', IOWC'…) 8288 yol denetleyicisi S2'–S0''dan üretir.
Soru 36 · 8086 Pinleri
Soru 36: Adres Hattı Sayısı
8086 mikroişlemcisinde kaç adet adres hattı bulunmaktadır?
- 16
- 20
- 32
- 40
Cevabı göster
Cevap: b) 20
A0–A19: AD0–AD15 (veriyle çoklu) + A16/S3–A19/S6 (durumla çoklu) → 220 = 1 MB adres alanı. Veri yolu 16 bittir; 40 ise pin sayısıdır.
Soru 37 · Yazmaçlar ve Bayraklar
Soru 37: Kesim Yazmaçları
8086 mimarisinde kesim yazmaçlarının işlevi nedir?
- İşlenen gerçek veriyi saklarlar.
- Farklı bellek kesimlerinin başlangıç adreslerini saklarlar.
- Yürütülen mevcut komutu saklarlar.
- Aritmetik işlemlerin sonucunu saklarlar.
Cevabı göster
Cevap: b)
CS, DS, SS ve ES kesimin başlangıcının 16 bitlik paragraf numarasını tutar; gerçek başlangıç = kesim × 10h. Ör. DS = 2000h → veri kesimi 20000h'de başlar ve 2FFFFh'ye kadar uzanır.
Soru 38 · Yazmaçlar ve Bayraklar
Soru 38: Genel Amaçlı Yazmaç Sayısı
8086 mimarisinde kaç adet genel amaçlı yazmaç bulunmaktadır?
- 4
- 8
- 12
- 16
Cevabı göster
Cevap: b) 8
Ders kaynağı (ve Intel belgeleri) AX, BX, CX, DX, SI, DI, BP, SP sekizlisini genel amaçlı yazmaç sayar. Bazı kitaplar yalnız ikiye bölünebilen AX, BX, CX, DX'i "genel amaçlı veri yazmaçları" (4) diye ayırır; cevabınızda hangisini kastettiğinizi belirtin.
Toplam 14 yazmaç: 8 genel + 4 kesim + IP + FLAGS; hepsi 16 bittir.
Soru 39 · Yazmaçlar ve Bayraklar
Soru 39: CX Yazmacı
8086 mimarisinde CX yazmacının işlevi nedir?
- Aritmetik işlemlerin sonucunu saklar.
- Bir kesim içindeki ofset adresini tutar.
- Dizgi işlemlerinde sayaç yazmacı olarak hizmet eder.
- Mevcut yığın kesiminin konumunu gösterir.
Cevabı göster
Cevap: c)
CX = Count: REP önekli dizgi komutlarında tekrar sayısı, LOOP/JCXZ'de döngü sayacı; kaydırma/döndürmede sayı CL'de durur.
a akümülatörü (AX), b IP/BX/SI/DI'yı, d SS'yi anlatır.
Soru 40 · Yazmaçlar ve Bayraklar
Soru 40: DI Yazmacı
8086 mimarisinde DI (hedef indis) yazmacının amacı nedir?
- Dizgi işlemleri sırasında kaynak işlenenin adresini tutar.
- Aritmetik işlemlerin sonucunu saklar.
- Dizgi işlemleri sırasında hedef işlenenin adresine işaret eder.
- CPU ile harici aygıtlar arasındaki veri transferlerini yönetir.
Cevabı göster
Cevap: c)
Dizgi komutlarında (MOVSB, STOSB, CMPSB…) hedef ES:DI, kaynak DS:SI'dır (a, SI'nın tanımıdır). Her adımda SI/DI, DF bayrağına göre artar ya da azalır.
Soru 41 · Yazmaçlar ve Bayraklar
Soru 41: AH ve AL
8086 mimarisinde AH ve AL yazmaçlarının amacı nedir?
- Komut işaretçisinin yüksek ve düşük baytlarını tutarlar.
- FLAGS yazmacının bayraklarını saklarlar.
- 8 bitlik veri üzerinde aritmetik ve mantıksal işlemler için kullanılırlar.
- Bellek kesimlerinin adreslerini tutarlar.
Cevabı göster
Cevap: c)
AX = AH : AL. AX = 1234h ise AH = 12h (yüksek bayt), AL = 34h (düşük bayt). AL'ye yazmak AH'yi değiştirmez.
İkiye bölünebilen yalnızca AX, BX, CX ve DX'tir; SI, DI, BP, SP, kesim yazmaçları ve IP'nin 8 bitlik parçası yoktur.
Soru 42 · Yazmaçlar ve Bayraklar
Soru 42: IP'nin Boyutu
8086 mimarisinde komut işaretçisi (IP) yazmacının boyutu kaç bittir?
- 8 bit
- 16 bit
- 32 bit
- 64 bit
Cevabı göster
Cevap: b) 16 bit
IP 16 bit → kod kesimi içinde 216 = 65 536 baytlık (64 KB) alan. Sonraki komutun 20 bitlik fiziksel adresi CS × 10h + IP ile bulunur.
Soru 43 · Yazmaçlar ve Bayraklar
Soru 43: Sonraki Komutun Ofseti
8086'da kod kesimi içinde, yürütülecek bir sonraki komutun bağıl adresini (ofset) saklayan yazmaç hangisidir?
- Yığın işaretçisi (SP)
- Taban işaretçisi (BP)
- Kaynak indis yazmacı (SI)
- Komut işaretçisi (IP)
Cevabı göster
Cevap: d) IP
Aslında SP, BP, SI ve IP'nin hepsi bir kesim içindeki ofseti tutar: SP → SS içinde yığının tepesi, BP → SS içinde yığın çerçevesi, SI → DS içinde kaynak veri. Sonraki komutun ofseti ise CS ile birlikte IP'dedir.
Soru 44 · Yazmaçlar ve Bayraklar
Soru 44: Ofset İçeren Yazmaç
Gerçek (fiziksel) adres yerine bir bağıl adres (ofset) içeren yazmaç hangisidir?
- SP (yığın işaretçisi)
- IP (komut işaretçisi)
- ES (ek kesim)
- SS (yığın kesimi)
Cevabı göster
Cevap: a) SP ve b) IP
SP, SS kesimi içinde; IP, CS kesimi içinde ofset tutar. ES ve SS kesim yazmaçlarıdır: kesimin başlangıç paragrafını tutarlar. Hiçbir 8086 yazmacı doğrudan 20 bitlik fiziksel adres tutmaz.
Ofset, kesimin başlangıcını değil, başlangıca göre uzaklığı belirtir.
Soru 45 · Yazmaçlar ve Bayraklar
Soru 45: Özel Amaçlı Yazmaç
Aşağıdakilerden hangisi mikroişlemcinin özel amaçlı bir yazmacıdır?
- Program sayacı
- Komut yazmacı
- Birikeç (akümülatör)
- Geçici yazmaç
Cevabı göster
Cevap: a) Program sayacı
Program sayacı (8086'da IP) yalnızca bir sonraki komutun adresini tutmak için vardır; MOV ile yazılamaz, yalnız JMP, CALL, RET, INT gibi komutlar değiştirir. Birikeç (AX) genel amaçlı da kullanılır.
Komut yazmacı ve geçici yazmaç da özel görevlidir ama programcıya görünmeyen iç yazmaçlardır; "özel amaçlı yazmaç" denince genelde IP, SP ve bayrak yazmacı anlaşılır.
Soru 46 · Yazmaçlar ve Bayraklar
Soru 46: Yığın Kesimi
8086 mimarisinde mevcut yığın kesiminin konumunu işaret etmek için hangi kesim yazmacı kullanılır?
- CS
- DS
- SS
- ES
Cevabı göster
Cevap: c) SS
Yığın erişimleri (PUSH, POP, CALL, RET, INT, IRET ve BP'li adresler) SS:SP / SS:BP ile yapılır. CS kod, DS veri, ES ek kesimdir (dizgi hedefi).
Soru 47 · Yazmaçlar ve Bayraklar
Soru 47: FLAGS Yazmacı
8086 mimarisinde FLAGS (bayraklar) yazmacının işlevi nedir?
- Aritmetik ve mantıksal işlemlerin durumunu saklar.
- Mevcut komutun başlangıç adresini saklar.
- İşlem yapılan işleneni tutar.
- Bellek kesimlerinin adreslerini saklar.
Cevabı göster
Cevap: a)
16 bitin 9'u kullanılır: 6 durum bayrağı (CF, PF, AF, ZF, SF, OF) son işlemin sonucunu anlatır; 3 denetim bayrağı (TF, IF, DF) işlemcinin davranışını yönetir.
b IP'yi (aslında sonraki komutun adresi), d kesim yazmaçlarını anlatır.
Soru 48 · Yazmaçlar ve Bayraklar
Soru 48: Koşul Bayrağı Olmayan
Aşağıdakilerden hangisi bir koşul (durum) bayrağı değildir?
- Tuzak bayrağı (trap)
- Yardımcı taşıma bayrağı (auxiliary carry)
- Eşlik bayrağı (parity)
- Sıfır bayrağı (zero)
Cevabı göster
Cevap: a) Tuzak bayrağı (TF)
Koşul bayraklarını işlemci sonuca göre kendisi ayarlar: CF, PF, AF, ZF, SF, OF. TF ise programcının kurduğu bir denetim bayrağıdır: 1 iken her komuttan sonra INT 1 oluşur (tek adım hata ayıklama).
Not: parity bayrağının Türkçe karşılığı eşlik (parite) bayrağıdır.
Soru 49 · Yazmaçlar ve Bayraklar
Soru 49: Durum Bayrağı Olmayan
Aşağıdakilerden hangisi mikroişlemcide bir durum bayrağı değildir?
- Taşma bayrağı (OF)
- Yön bayrağı (DF)
- Kesme bayrağı (IF)
- İndeks bayrağı
Cevabı göster
Cevap: d) İndeks bayrağı (sorunun beklediği)
8086'da "indeks bayrağı" diye bir bayrak yoktur; beklenen cevap d'dir.
Ama dikkat: DF ve IF de durum değil denetim bayrağıdır. Kesin konuşursak b, c ve d'nin üçü de durum bayrağı değildir; yalnızca a (OF) durum bayrağıdır.
Soru 50 · Yazmaçlar ve Bayraklar
Soru 50: BCD ve Bayraklar
Mikroişlemcide BCD (ikili kodlanmış ondalık) aritmetik işlemleri için hangi bayrak kullanılır?
- İşaret bayrağı
- Yardımcı taşıma bayrağı
- Eşlik bayrağı
- Sıfır bayrağı
Cevabı göster
Cevap: b) Yardımcı taşıma bayrağı (AF)
AF, düşük nibble'dan yükseğe (bit 3 → bit 4) elde ya da ödünç olunca 1 olur. DAA/DAS ve AAA/AAS bu bayrağa bakarak ±6 düzeltmesi yapar.
Örnek: 08h + 08h = 10h, AF = 1 → DAA → 16h (BCD olarak 8 + 8 = 16 ✓).
Soru 51 · Yazmaçlar ve Bayraklar
Soru 51: Yön Bayrağı
8086'da FLAGS yazmacındaki yön bayrağı (DF) ne işe yarar?
- Bir kesmenin bekleyip beklemediğini gösterir
- Dizgi işlemlerinin yönünü belirler
- CPU'nun ayrıcalık seviyesini kontrol eder
- Taşıma bayrağının durumunu gösterir
Cevabı göster
Cevap: b)
DF = 0 (CLD): SI/DI her adımda artar → artan adreslere (ileri). DF = 1 (STD): SI/DI azalır → azalan adreslere (geri).
Soru 52 · Yazmaçlar ve Bayraklar
Soru 52: Yığın İşaretçisi
Aşağıdakilerden hangisi yığın işaretçisi (SP) hakkında doğrudur?
- Yığın belleğinin en üstündeki (tepe) adresi içerir.
- 8 bitlik bir yazmaçtır.
- Veriyi kalıcı olarak saklar.
- Yığın işleminden sonra başlatılır.
Cevabı göster
Cevap: a)
SP 16 bitliktir (b yanlış) ve SS kesimi içinde yığının tepesinin ofsetini tutar. PUSH: önce SP ← SP − 2, sonra yazma; POP: önce okuma, sonra SP ← SP + 2.
Yığın, kullanılmadan önce kurulmalıdır (SS ve SP yüklenir; d yanlış). Yığındaki veri geçicidir (c yanlış).
Soru 53 · Yazmaçlar ve Bayraklar
Soru 53: PUSH
PUSH komutu bir sözcüğü (word) kaynaktan nereye kopyalar?
- Yığın (stack)
- Bellek (memory)
- Yazmaç (register)
- Hedef (destination)
Cevabı göster
Cevap: a) Yığın
PUSH AX: SP ← SP − 2, sonra [SS:SP] ← AX (düşük bayt düşük adrese). 8086'da yalnızca 16 bitlik değerler itilebilir.
Yığın da bellekte durur, ama sorunun beklediği özel bölge yığındır.
Soru 54 · Sayı Sistemleri
Soru 54: İkiliden Onluğa
a) (01101011)2 b) (1111011)2 sayılarının onluk değeri kaçtır?
Cevabı göster
Cevap: a) 107 b) 123
a) 0·128 + 1·64 + 1·32 + 0·16 + 1·8 + 0·4 + 1·2 + 1·1 = 64 + 32 + 8 + 2 + 1 = 107 (= 6Bh)
b) 1·64 + 1·32 + 1·16 + 1·8 + 0·4 + 1·2 + 1·1 = 64 + 32 + 16 + 8 + 2 + 1 = 123 (= 7Bh)
Kısa yol: dörtlü gruplara ayırıp onaltılıya çevirin: 0110 1011 = 6Bh = 6·16 + 11 = 107.
Soru 55 · Sayı Sistemleri
Soru 55: Onaltılıdan Onluğa
a) (1AB)16 b) (512F)16 sayılarının onluk değeri kaçtır?
Cevabı göster
Cevap: a) 427 b) 20 783
a) 1·16² + A·16 + B = 1·256 + 10·16 + 11 = 256 + 160 + 11 = 427
b) 5·16³ + 1·16² + 2·16 + F = 5·4096 + 256 + 32 + 15 = 20 480 + 256 + 32 + 15 = 20 783
A = 10, B = 11, C = 12, D = 13, E = 14, F = 15.
Soru 56 · Sayı Sistemleri
Soru 56: 1'e Tümleyen
8 bitlik sistemde a) 21 b) 20 sayılarının 1'e tümleyeni kaçtır?
Cevabı göster
Cevap: a) 1110 1010 (EAh) b) 1110 1011 (EBh)
a) 21 = 0001 0101 → bütün bitler ters çevrilir → 1110 1010
b) 20 = 0001 0100 → 1110 1011
1'e tümleyen = NOT işlemi (NOT AL). Bu gösterimde sıfırın iki biçimi vardır (0000 0000 ve 1111 1111); bu yüzden işlemciler 2'ye tümleyeni kullanır.
Soru 57 · Sayı Sistemleri
Soru 57: 2'ye Tümleyen
8 bitlik sistemde a) 25 b) 30 sayılarının 2'ye tümleyeni kaçtır?
Cevabı göster
Cevap: a) 1110 0111 (E7h) b) 1110 0010 (E2h)
a) 25 = 0001 1001 → ters: 1110 0110 → +1 → 1110 0111 = E7h
b) 30 = 0001 1110 → ters: 1110 0001 → +1 → 1110 0010 = E2h
Sağlama: 256 − 25 = 231 = E7h, 256 − 30 = 226 = E2h. 2'ye tümleyen sayının negatifidir: E7h = −25 (NEG komutu). Kısa yol: sağdan ilk 1'e kadar bitleri aynen yaz, sonrasını ters çevir.
Soru 58 · Sayı Sistemleri
Soru 58: İşaretli Yorum
8 bitlik 1111 1011b (FBh) değeri a) işaretsiz b) işaretli (2'ye tümleyen) yorumla onluk olarak kaçtır?
- a) 251 b) −5
- a) 251 b) −123
- a) 123 b) −4
- a) 245 b) −5
Cevabı göster
Cevap: a)
İşaretsiz: 128 + 64 + 32 + 16 + 8 + 2 + 1 = 251. İşaretli: MSB = 1 → negatif; 2'ye tümleyenini alalım: 0000 0100 + 1 = 0000 0101 = 5 → −5 (ya da 251 − 256 = −5).
8 bitlik aralıklar: işaretsiz 0…255, işaretli −128…+127. −123 seçeneği, işaret bitini yalnızca "eksi" diye okuyan (işaret-büyüklük) hatalı yorumdur.
Soru 59 · Bellek ve Adresleme
Soru 59: 20 Bitlik Adres Yolu
20 bitlik bir adres yolu ile kaç farklı bellek konumu adreslenebilir?
- 1 048 576 konum
- 2 097 152 konum
- 4 194 304 konum
- 8 388 608 konum
Cevabı göster
Cevap: a) 220 = 1 048 576 (1 M)
n adres hattı → 2n konum. 220 = 1 048 576; 8086'da her konum bir bayt olduğundan 1 MB (00000h–FFFFFh). Diğer seçenekler 221, 222, 223'tür.
Soru 60 · Bellek ve Adresleme
Soru 60: Kesim Boyutu
1 MB bellek hangi boyutta kesimlere bölünebilir?
- 1 KB
- 64 KB
- 32 KB
- 16 KB
Cevabı göster
Cevap: b) 64 KB
Ofset 16 bit olduğundan bir kesim en fazla 216 = 64 KB'dır. Kesimler 16 baytlık paragraf sınırlarında başlar ve üst üste binebilir; üst üste binmeyen kesimlerle 1 MB = 16 × 64 KB.
Soru 61 · Bellek ve Adresleme
Soru 61: Gereken Adres Hattı
Bir mikroişlemciye 50 GB bellek bağlanacaksa minimum kaç adres hattı gereklidir? (Varyant: 90 GB için?)
- 36
- 39
- 32
- 37
Cevabı göster
Cevap: a) 36 (90 GB için d) 37)
230 = 1 GB → 235 = 32 GB < 50 GB ≤ 64 GB = 236 → 36 hat. 35 hat yalnız 32 GB'a yeter.
90 GB: 236 = 64 GB < 90 GB ≤ 128 GB = 237 → 37 hat. Kural: 2n ≥ kapasite olan en küçük n.
Soru 62 · Bellek ve Adresleme
Soru 62: 4 KB RAM
Bir mikroişlemciye 4 KB RAM bağlamak için kaç adres hattına ihtiyaç duyulur?
- 10
- 16
- 12
- 20
Cevabı göster
Cevap: c) 12
4 KB = 4 × 1024 = 4096 = 212 bayt → 12 hat (A0–A11). 10 hat 1 KB'a, 16 hat 64 KB'a, 20 hat 1 MB'a yeter.
Soru 63 · Bellek ve Adresleme
Soru 63: Bellek Kapasitesi
Bir belleğin 20 adres hattı ve 16 veri hattı vardır. Bellek kapasitesi ne olur?
- 8 KB
- 2 MB
- 16 MB
- 64 KB
Cevabı göster
Cevap: b) 2 MB
Konum sayısı 220 = 1 M; her konum 16 bit = 2 bayt → 1 M × 2 B = 2 MB (= 16 Mbit). 16 MB, bitleri bayt sanmaktan doğan hatadır.
Dikkat: 8086'da her adres bir bayta karşılık gelir; 20 hat orada 1 MB demektir.
Soru 64 · Bellek ve Adresleme
Soru 64: Ortak Veriyle Üç Soru
CS = 3400h, IP = 4050h, BX = 0150h, DS = 2000h, CX = 5000h,
[00150h] = 80h, [20150h] = 08h
- Sonraki komutun fiziksel adresi nedir?
MOV AX, CXkomutu sonrası AX içeriği ne olur?MOV AX, [BX]komutu sonrası AX içeriği ne olur?
Cevabı göster
Cevap: 1) 38050h 2) 5000h 3) AL = 08h, AH = [20151h]
1) CS × 10h + IP = 34000h + 4050h = 38050h. 2) Yazmaçtan yazmaca kopya: AX = 5000h.
3) EA = BX = 0150h, varsayılan kesim DS → 20000h + 0150h = 20150h. AX 16 bit olduğu için iki bayt okunur (little-endian): AL ← [20150h] = 08h, AH ← [20151h]. [20151h] = 00h ise AX = 0008h.
[00150h] = 80h bir çeldiricidir: o, DS = 0 olsaydı okunacak adrestir.
Soru 64 · Adım adım çözüm
Soru 64: İzleme
Ortak veriyle üç sorunun çözümü: adres hesabı, MOV AX, CX ve MOV AX, [BX].
Önce kendiniz çözün, sonra › ile ilerleyin. Başlangıçta AX bilinmiyor (0000h gösterildi).
Sonraki komut CS:IP = 3400:4050'dedir → 34000h + 4050h = 38050h. MOV AX, CX buradan getirilir.
AX ← CX = 5000h; CX değişmez, bayraklar değişmez. Komut 2 bayt (8B C1) → IP = 4052h.
EA = BX = 0150h; [BX] için varsayılan kesim DS → 2000h × 10h + 0150h = 20150h.
Sözcük okunur: AL ← [20150h] = 08h, AH ← [20151h] (verilmemiş; 00h varsayıldı) → AX = 0008h. IP = 4054h.
; CS=3400h IP=4050h DS=2000h ; BX=0150h CX=5000h ; [00150h]=80h [20150h]=08h MOV AX, CX ; 2. soru MOV AX, [BX] ; 3. soru
Soru 65 · Bellek ve Adresleme
Soru 65: MOV CL, [BX]
BX = 0050h, DS = 2000h, [00500h] = 80h, [20050h] = 08h, CX = 5000h ise MOV CL, [BX] çalıştırıldıktan sonra CX'in içeriği ne olur?
- 0050h
- 5008h
- 5080h
- 0008h
Cevabı göster
Cevap: b) 5008h
Fiziksel adres = DS × 10h + BX = 20000h + 0050h = 20050h → CL ← 08h. Hedef 8 bit olduğundan yalnız bir bayt okunur ve CH (50h) değişmez → CX = 5008h.
5080h: adresi 00500h sanmak (BX × 10h); 0008h: CH'nin sıfırlandığını sanmak. Karşılaştırın: önceki sorudaki MOV AX, [BX] sözcük okuyordu.
Soru 65 · Adım adım çözüm
Soru 65: İzleme
MOV CL, [BX]: hangi adres, kaç bayt, CX'in hangi yarısı?
Önce kendiniz çözün. CX = 5000h: CH = 50h, CL = 00h.
EA = BX = 0050h, kesim DS → 20000h + 0050h = 20050h (00500h değil!).
CL ← [20050h] = 08h; CH = 50h aynen kalır → CX = 5008h.
; DS=2000h BX=0050h CX=5000h ; [00500h]=80h [20050h]=08h MOV CL, [BX] ; bayt okuma
Soru 66 · Bellek ve Adresleme
Soru 66: Fiziksel Adres (1)
CS = 348Ah ve IP = 4214h ise kodun eriştiği 20 bitlik fiziksel adres nedir?
- 455CAh
- 0769Eh
- 390B4h
- 38AB4h
Cevabı göster
Cevap: d) 38AB4h
CS × 10h + IP = 348A0h + 4214h = 38AB4h.
Çeldiriciler: 0769Eh kaydırmadan toplama (348Ah + 4214h); 455CAh IP'yi kaydırma (42140h + 348Ah).
Soru 67 · Bellek ve Adresleme
Soru 67: Fiziksel Adres (2)
a) CS = 5500h, IP = 1200h ise fiziksel adres? (56200h / 67000h / 17500h / 57500h)
b) CS = 4321h, IP = 1000h ise sonraki komutun fiziksel adresi?
Cevabı göster
Cevap: a) 56200h b) 44210h
a) 55000h + 1200h = 56200h (17500h: IP'yi kaydırmak; 67000h: 55000h + 12000h).
b) 43210h + 1000h = 44210h.
Pratik: kesim değerinin sağına bir 0 ekleyin, ofseti altına sağa hizalı yazıp toplayın.
Soru 68 · Bellek ve Adresleme
Soru 68: Hangi Ofset?
CS = 4042h ve ofset yazmaçları BX = 2025h, IP = 0580h, DI = 4247h olsun. CS yazmacının işaret ettiği bellek konumunun fiziksel adresini hesaplayın.
Cevabı göster
Cevap: 409A0h
CS her zaman IP ile eşleşir: 4042h × 10h + 0580h = 40420h + 0580h = 409A0h.
BX ve DI çeldiricidir: BX varsayılan olarak DS ile, DI ise DS ile (dizgi hedefi olarak ES ile) eşleşir.
Soru 69 · Bellek ve Adresleme
Soru 69: Ters Yönde Hesap
Fiziksel adresi 12345h olan belleğe erişmek için DS ve SI değerleri ne olmalıdır?
Cevabı göster
Cevap: Örneğin DS = 1230h, SI = 0045h (tek çözüm yok)
1230h × 10h + 0045h = 12300h + 0045h = 12345h ✓
Başka çözümler: DS = 1234h, SI = 0005h; DS = 1000h, SI = 2345h. DS en küçük 0235h (SI = FFF5h), en büyük 1234h olabilir → 4096 farklı DS:SI çifti aynı adresi gösterir.
Bu, kesimlerin 16 baytta bir başlayıp üst üste binmesinin sonucudur.
Soru 70 · Bellek ve Adresleme
Soru 70: MOV AX, [BX] Modu
MOV AX, [BX] komutu hangi adresleme modunu kullanır?
- Yazmaç dolaylı adresleme
- Doğrudan adresleme
- Yazmaç adresleme
- Yazmaç bağıl adresleme
Cevabı göster
Cevap: a) Yazmaç dolaylı
BX bir veri değil, bir adres (ofset) tutar; işlemci DS:BX'teki sözcüğü AX'e alır.
Karşılaştırma: doğrudan MOV AX, [1234h]; yazmaç MOV AX, BX; yazmaç bağıl (taban + yer değiştirme) MOV AX, [BX+4]; anlık MOV AX, 1234h.
Soru 71 · Bellek ve Adresleme
Soru 71: Taban Yazmacı
8086'da indeksli (taban + indis) adresleme modlarında taban yazmacı olarak hangisi kullanılır?
- SP
- BP
- SI
- DI
Cevabı göster
Cevap: b) BP (ve seçeneklerde olmayan BX)
8086'da taban yazmaçları BX ve BP, indis yazmaçları SI ve DI'dır: [BX+SI], [BP+DI+8]… BP'li adreslerde varsayılan kesim SS, BX'li adreslerde DS'dir.
SP 8086'da adres hesabında kullanılamaz ([SP] geçersiz); SI ve DI indis yazmacıdır.
Soru 72 · Bellek ve Adresleme
Soru 72: Diziler İçin Mod
8086'da dizi ve liste işlemleri için en uygun adresleme modu hangisidir?
- Taban yazmaçlı
- Doğrudan
- İndeksli
- Anlık
Cevabı göster
Cevap: c) İndeksli
Dizinin başı sabit yer değiştirme, eleman numarası indis yazmacındadır: MOV AL, dizi[SI] = [SI + dizi]; SI artırılarak dizi gezilir. İki boyutlu tablolarda taban + indis ([BX+SI]) kullanılır.
Not: 8085'te indeksli mod yoktur; orada diziler HL çiftiyle yazmaç dolaylı adreslemeyle gezilir.
Soru 73 · Bellek ve Adresleme
Soru 73: Varsayılan Kesim
DS = 2000h, SS = 3000h, BX = 1000h, BP = 0100h, SI = 0020h olsun. MOV AX, [BP+SI+4] hangi fiziksel adresten okur?
- 20124h
- 30124h
- 21024h
- 31024h
Cevabı göster
Cevap: b) 30124h
EA = BP + SI + 4 = 0100h + 0020h + 4 = 0124h. Adreste BP geçtiği için varsayılan kesim SS: 30000h + 0124h = 30124h.
20124h: kesimi DS sanmak; 21024h / 31024h: BP yerine BX'i almak. DS istenirse kesim öneki yazılır: MOV AX, DS:[BP+SI+4].
Soru 74 · Bellek ve Adresleme
Soru 74: Little-Endian
Kod çalıştıktan sonra bellekteki [0200h] ve [0201h] baytları ile CX ve DX ne olur? (Başlangıçta CX = DX = 0.)
MOV AX, 1234h MOV BX, 0200h MOV [BX], AX MOV SI, 1 MOV CL, [BX+SI] MOV DX, [BX] XCHG DL, DH
Cevabı göster
Cevap: [0200h] = 34h, [0201h] = 12h, CX = 0012h, DX = 3412h
MOV [BX], AX sözcüğü little-endian yazar: düşük bayt (34h) düşük adrese, yüksek bayt (12h) bir sonrakine.
[BX+SI] = [0201h] → CL = 12h. [BX]'ten sözcük okunca yeniden 1234h elde edilir; XCHG DL, DH yarıları takas eder → DX = 3412h.
Soru 74 · Adım adım çözüm
Soru 74: İzleme
Sözcük yazma ve okuma; bayt erişimi ile hangi yarı gelir?
Önce kendiniz çözün, sonra › ile ilerleyin.
AX = 1234h: AH = 12h, AL = 34h.
BX = 0200h: veri kesimindeki bir ofset.
Sözcük yazma: [0200h] ← AL = 34h, [0201h] ← AH = 12h (little-endian).
SI = 1.
EA = BX + SI = 0201h → CL ← 12h; CH = 00h → CX = 0012h.
Sözcük okuma: DL ← [0200h] = 34h, DH ← [0201h] = 12h → DX = 1234h.
XCHG yarıları takas eder → DX = 3412h. MOV ve XCHG bayrakları etkilemez.
MOV AX, 1234h MOV BX, 0200h MOV [BX], AX MOV SI, 1 MOV CL, [BX+SI] MOV DX, [BX] XCHG DL, DH
Soru 75 · Değişkenler
Soru 75: Kaç Bayt?
Aşağıdaki tanımlar bellekte toplam kaç bayt yer kaplar?
a DB 5 b DW 3 DUP(0) c DB 'ABC', 0 d DD 12345678h
- 10
- 12
- 15
- 18
Cevabı göster
Cevap: c) 15
a: 1 bayt · b: 3 sözcük = 6 bayt · c: 'A','B','C' ve 0 = 4 bayt · d: çift sözcük = 4 bayt → 1 + 6 + 4 + 4 = 15.
DB = 1, DW = 2, DD = 4 bayt; n DUP(x) öğeyi n kez tekrarlar; tırnak içindeki her karakter bir bayttır.
Soru 76 · Değişkenler
Soru 76: Değişkenlerle MOV
Program çalıştıktan sonra (RET'ten hemen önce) AX, DX ve CL ne olur? (Başlangıçta yazmaçlar 0.)
ORG 100h MOV AL, a MOV BX, OFFSET dizi MOV AH, [BX+2] LEA SI, w MOV DX, [SI] MOV CL, BYTE PTR w RET a DB 7 dizi DB 10h, 20h, 30h w DW 0ABCDh
Cevabı göster
Cevap: AX = 3007h, DX = ABCDh, CL = CDh
AL ← a = 07h; BX ← dizinin adresi; AH ← dizi[2] = 30h → AX = 3007h. SI ← w'nin adresi; DX ← [SI] = ABCDh. BYTE PTR w w'nin ilk baytını (düşük bayt, CDh) okur.
Soru 76 · Adım adım çözüm
Soru 76: İzleme
Değişken adresleri ve içerikleri adım adım.
Önce kendiniz çözün, sonra › ile ilerleyin.
Kod 0100h'den başlar. Komutlar 3+3+3+4+2+4+1 = 20 (14h) bayt → a = 0114h, dizi = 0115h, w = 0118h.
AL ← [0114h] = 07h (a bayt değişken → bayt okuma).
OFFSET dizi = 0115h: adres, derleme anında bilinen bir sabittir.
EA = 0115h + 2 = 0117h → dizi[2] = 30h → AH = 30h, AX = 3007h.
LEA SI, w → SI = 0118h (adres, içerik değil).
DX ← [0118h] sözcük: düşük bayt CDh, yüksek ABh → DX = ABCDh.
BYTE PTR w → yalnız [0118h] → CL = CDh.
ORG 100h MOV AL, a MOV BX, OFFSET dizi MOV AH, [BX+2] LEA SI, w MOV DX, [SI] MOV CL, BYTE PTR w RET a DB 7 dizi DB 10h, 20h, 30h w DW 0ABCDh
Soru 77 · Değişkenler
Soru 77: LEA ve OFFSET
LEA BX, dizi ile MOV BX, OFFSET dizi komutları için hangisi doğrudur?
- LEA dizinin ilk elemanını, MOV OFFSET adresini yükler.
- İkisi de dizinin ofset adresini BX'e yükler.
- OFFSET yalnızca kod kesimindeki etiketlerle kullanılır.
- LEA bayrakları değiştirir, MOV değiştirmez.
Cevabı göster
Cevap: b)
Basit bir değişkende ikisi de aynı sonucu (dizinin ofsetini) verir. Fark: OFFSET derleme anında hesaplanan bir sabittir; LEA ise adresi çalışma anında hesaplayabilir: LEA SI, [BX+DI+4].
Ne LEA ne MOV bayrakları değiştirir.
Soru 78 · Kesmeler ve emu8086.inc
Soru 78: Kesme Nedir?
Kesme (interrupt) nedir? Türlerine örnek verin.
Cevabı göster
Cevap: Programı geçici olarak bırakıp bir olaya hizmet etme mekanizması
Kesme, işlemcinin yürüttüğü programı geçici olarak bırakıp bir olaya hizmet eden özel bir yordamı (ISR, kesme hizmet yordamı) çalıştırmasıdır. Yordam IRET ile bitince program kaldığı yerden devam eder.
Donanım: INTR ve NMI pinleri (klavye, zamanlayıcı). Yazılım: INT n komutu (INT 10h, INT 21h). İşlemci istisnaları: sıfıra bölme (INT 0), tek adım (INT 1), taşma (INT 4).
Yoklamaya (polling) göre avantajı: CPU olayı beklerken boşa dönmez.
Soru 79 · Kesmeler ve emu8086.inc
Soru 79: Vektör Adresi
INT 21h'nin kesme vektörü bellekte hangi fiziksel adreste başlar?
- 00021h
- 00084h
- 00042h
- 21000h
Cevabı göster
Cevap: b) 00084h
Kesme vektör tablosu (IVT) 00000h–003FFh arasındadır: 256 vektör × 4 bayt = 1 KB. Her vektör 4 bayttır (önce IP, sonra CS) → adres = n × 4 = 21h × 4 = 84h → 0000:0084h.
00042h, n × 2 almaktır; vektörler 4 bayt olduğu için yanlıştır.
Soru 80 · Kesmeler ve emu8086.inc
Soru 80: INT n Sırası
INT n komutu yürütülürken işlemcinin yaptıkları doğru sırayla hangisidir?
- PUSHF → IF = 0, TF = 0 → PUSH CS → PUSH IP → CS:IP ← vektör
- PUSH IP → PUSH CS → PUSHF → CS:IP ← vektör → IF = 0
- CS:IP ← vektör → PUSHF → PUSH CS → PUSH IP
- PUSH CS → PUSH IP → IF = 1 → CS:IP ← vektör
Cevabı göster
Cevap: a)
Önce bayraklar saklanır, sonra IF ve TF sıfırlanır (yordam başka INTR ile kesilmesin, adım adım çalışmasın), dönüş adresi CS ve IP itilir, ardından vektör tablosundan yeni CS:IP yüklenir.
IRET tersini yapar: IP, CS ve bayrakları geri alır.
Soru 81 · Kesmeler ve emu8086.inc
Soru 81: TRAP Kesmesi
Aşağıdakilerden hangisi (8085'in) TRAP kesmesinin özelliği değildir?
- Maskelenemez (non-maskable)
- En yüksek önceliğe sahiptir
- Yalnızca kenar tetiklemeli sinyal kullanır
- Vektörlü bir kesmedir
Cevabı göster
Cevap: c)
TRAP, 8085'in maskelenemeyen, en yüksek öncelikli, vektörlü (0024h) kesmesidir. Hem kenar hem seviye duyarlıdır: giriş yükselmeli ve kabul edilene kadar 1'de kalmalıdır. Bu yüzden "yalnızca kenar tetiklemeli" yanlıştır.
8086'daki karşılığı NMI'dır (tip 2, vektör 00008h): maskelenemez ve yükselen kenarla tetiklenir.
Soru 82 · Kesmeler ve emu8086.inc
Soru 82: Maskelenemeyen Kesme
Maskelenemeyen (non-maskable) kesmeye örnek hangisidir?
- TRAP
- RST 6.5
- INTR
- RST 7.5
Cevabı göster
Cevap: a) TRAP
Seçenekler 8085 kesmeleridir: TRAP maskelenemez; RST 5.5/6.5/7.5 ve INTR maskelenebilir.
8086'da maskelenemeyen kesme NMI pinidir; INTR ise IF = 0 (CLI) yapılarak maskelenebilir.
Soru 83 · Kesmeler ve emu8086.inc
Soru 83: emu8086.inc
emu8086.inc kütüphanesi ile ilgili hangisi doğrudur?
- PRINT bir prosedürdür,
CALL PRINTile çağrılır. - PRINT_NUM'u kullanmak için programa DEFINE_PRINT_NUM ve DEFINE_PRINT_NUM_UNS satırları eklenmelidir.
GOTOXYönce satırı, sonra sütunu alır.include 'emu8086.inc'satırı programın en sonuna yazılmalıdır.
Cevabı göster
Cevap: b)
PRINT, PRINTN, PUTC, GOTOXY birer makrodur: doğrudan yazılır, kullanıldıkları yere kopyalanır (a yanlış). PRINT_NUM, SCAN_NUM, GET_STRING gibi prosedürler bir kez DEFINE_… ile tanımlanır ve CALL ile çağrılır; PRINT_NUM, PRINT_NUM_UNS'ı da kullanır.
GOTOXY col, row: önce sütun (c yanlış). include satırı programın başında olur (d yanlış).
Soru 84 · Kesmeler ve emu8086.inc
Soru 84: Ekran Çıktısı
Programın ekran çıktısı nedir?
include 'emu8086.inc' ORG 100h PRINT 'A' PRINTN 'B' PUTC 'C' RET
- ABC
- AB, alt satırda C
- A, B, C ayrı satırlarda
- A B C (boşluklu)
Cevabı göster
Cevap: b)
PRINT 'A' → A; PRINTN 'B' → B ve ardından satır başı + yeni satır (CR LF); PUTC 'C' → yeni satırın başına C. Ekranda:ABC
Özet
Hızlı Tekrar (1 / 3)
| Soru | Konu | Akılda kalsın |
|---|---|---|
| 1 | Giriş ve Mimari | CISC, RISC ve EPIC üç ana komut kümesi yaklaşımıdır; 8086 CISC'tir |
| 2 | Giriş ve Mimari | Mikroişlemci = ALU + CU + yazmaçlar; bellek ve G/Ç dışarıda |
| 4 | Giriş ve Mimari | Saat döngüsü ⊂ makine (yol) döngüsü ⊂ komut döngüsü |
| 7 | Giriş ve Mimari | Getirme sayısı komut uzunluğuna bağlıdır |
| 10 | Giriş ve Mimari | BIU: adres hesabı, önden getirme, yol işlemleri; EU: çöz ve yürüt |
| 13 | Giriş ve Mimari | 6 baytlık kuyruk: getirme ile yürütme örtüşür |
| 14 | Giriş ve Mimari | 8086 komutları 1–6 bayt (öneklerle daha uzun) |
| 15 | Diller ve Assembly | Assembler satırı makine koduna çevirir; MOV AL,5 → B0 05 |
| 17 | Diller ve Assembly | ORG 100h: .COM kodu 100h ofsetinden başlar |
| 18 | Diller ve Assembly | MOV bayrakları etkilemez; hedef soldadır |
| 20 | Diller ve Assembly | Bellek → bellek MOV yok: yazmaç üzerinden iki adım |
| 21 | Diller ve Assembly | Kesime sabit yok, bellek-bellek yok, boyutlar eşit olmalı |
| 22 | 8086 Pinleri | 40 pin; VCC = pin 40, GND = pin 1 ve 20 |
| 24 | 8086 Pinleri | ALE: T1'de adresi dış mandala kilitler |
| 27 | 8086 Pinleri | RESET sonrası CS:IP = FFFF:0000 → ilk komut FFFF0h |
Özet
Hızlı Tekrar (2 / 3)
| Soru | Konu | Akılda kalsın |
|---|---|---|
| 28 | 8086 Pinleri | HOLD/HLDA: DMA için yolu devretme el sıkışması |
| 31 | 8086 Pinleri | 8086: M/IO' = 1 bellek, 0 G/Ç (8088/8085'te ters) |
| 34 | 8086 Pinleri | MN/MX' = 1 minimum, 0 maksimum (8288 + 8087) |
| 36 | 8086 Pinleri | 20 adres hattı → 1 MB; 16 bit veri yolu |
| 37 | Yazmaçlar ve Bayraklar | Kesim yazmacı × 10h = kesimin başlangıç adresi |
| 38 | Yazmaçlar ve Bayraklar | 8 genel (AX…SP) + 4 kesim + IP + FLAGS = 14 |
| 40 | Yazmaçlar ve Bayraklar | Dizgi: kaynak DS:SI, hedef ES:DI, sayaç CX |
| 46 | Yazmaçlar ve Bayraklar | Varsayılan: CS:IP, SS:SP/BP, DS:BX/SI/DI, ES:DI (dizgi) |
| 47 | Yazmaçlar ve Bayraklar | 6 durum (CF PF AF ZF SF OF) + 3 denetim (TF IF DF) bayrağı |
| 51 | Yazmaçlar ve Bayraklar | DF = 0 (CLD) ileri, DF = 1 (STD) geri |
| 53 | Yazmaçlar ve Bayraklar | PUSH: SP − 2, sonra yaz; POP: oku, sonra SP + 2 |
| 54 | Sayı Sistemleri | Basamak ağırlıkları: 128 64 32 16 8 4 2 1 |
| 56 | Sayı Sistemleri | 1'e tümleyen = bitleri ters çevir; 2'ye tümleyen = ters + 1 |
| 58 | Sayı Sistemleri | 8 bit işaretli aralık −128…127; FBh = −5 |
| 59 | Bellek ve Adresleme | n hat → 2ⁿ konum; 2¹⁰ = 1 K, 2²⁰ = 1 M, 2³⁰ = 1 G |
Özet
Hızlı Tekrar (3 / 3)
| Soru | Konu | Akılda kalsın |
|---|---|---|
| 60 | Bellek ve Adresleme | Kesim ≤ 64 KB, 16 baytlık paragraf sınırında başlar |
| 61 | Bellek ve Adresleme | Gereken hat = 2ⁿ ≥ kapasite olan en küçük n (50 GB → 36) |
| 64 | Bellek ve Adresleme | Sözcük okuma 2 bayt: AL ← [EA], AH ← [EA+1] |
| 65 | Bellek ve Adresleme | Bayt yükleme yazmacın diğer yarısını değiştirmez |
| 66 | Bellek ve Adresleme | Fiziksel adres = kesim × 10h + ofset (kesim bir hane sola) |
| 69 | Bellek ve Adresleme | Aynı fiziksel adrese birçok kesim:ofset çifti gider |
| 70 | Bellek ve Adresleme | [BX] yazmaç dolaylı; [1234h] doğrudan; [BX+4] bağıl |
| 74 | Bellek ve Adresleme | Little-endian: düşük bayt düşük adreste |
| 75 | Değişkenler | DB 1, DW 2, DD 4 bayt; DUP tekrarlar |
| 76 | Değişkenler | BYTE PTR w: sözcüğün düşük baytı (ilk adres) |
| 78 | Kesmeler ve emu8086.inc | Kesme: ISR çalışır, IRET ile kalınan yere dönülür |
| 79 | Kesmeler ve emu8086.inc | Vektör adresi = n × 4 (IP, sonra CS); IVT 1 KB |
| 82 | Kesmeler ve emu8086.inc | 8086: NMI maskelenemez; INTR IF ile maskelenir |
| 83 | Kesmeler ve emu8086.inc | Makro (PRINT, PUTC, GOTOXY) doğrudan; prosedür DEFINE_ + CALL |
Özet
Kaynaklar
- Intel, The 8086 Family User's Manual, 1979 — mimari, pin açıklamaları ve komut kodlaması.
- B. B. Brey, The Intel Microprocessors, 8. baskı, Pearson, 2009.
- emu8086 yardım belgeleri: emu8086.inc, adresleme ve kesmeler.