Bölüm 12: Vize Çalışma Soruları

Mikroişlemciler
Giriş ve 8086 mimarisiProgramlama dilleri ve assembly8086 pinleriYazmaçlar ve bayraklarSayı sistemleriFiziksel adres ve adreslemeDeğişkenlerKesmeler ve emu8086.inc
Sercan KÜLCÜ · Giresun Üniversitesi · Elektrik-Elektronik Mühendisliği

Giriş

Öğrenme Çıktıları

Mimari

BIU, EU, kuyruk, yazmaçlar, bayraklar ve pinlerin görevlerini ayırt etmek.

Adres hesabı

Kesim × 10h + ofset ile fiziksel adresi bulmak; gereken adres hattı sayısını hesaplamak.

Kod izleme

MOV, XCHG, LEA komutlarından sonra yazmaç ve bellek içeriklerini (little-endian) belirlemek.

Sayılar ve kesmeler

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?

1 · OkuyunHer slaytta bir soru var; çoktan seçmeli sorularda dört seçenek.
2 · ÇözünCevabı kâğıda yazın; hesap sorularında ara adımları da yazın.
3 · Kontrol edin"Cevabı göster" kutusunu açın. Kod sorularının ardından gelen "İzleme" slaytında kod satır satır çalışır.

Soru 1 · Giriş ve Mimari

Soru 1: Mikroişlemci Türleri

Aşağıdakilerden hangisi bir mikroişlemci türüdür?

  1. CISC
  2. RISC
  3. EPIC
  4. 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?

  1. Dahili belleğe (RAM/ROM) sahiptir
  2. Arayüz (G/Ç) devreleri içerir
  3. ALU, CU ve yazmaçlar içerir
  4. 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.

  1. Program sayacı
  2. Durum (bayrak) yazmacı
  3. Ana bellek
  4. İ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?

  1. Saat döngüsü
  2. Bellek döngüsü
  3. Makine döngüsü
  4. 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?

  1. Program sayacı
  2. Bellek adres yazmacı
  3. Bellek veri yazmacı
  4. 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?

  1. Opcode getirme, bellek okuma, bellek yazma, G/Ç okuma, G/Ç yazma
  2. Opcode getirme, bellek yazma, bellek okuma, G/Ç okuma, G/Ç yazma
  3. G/Ç okuma, opcode getirme, bellek okuma, bellek yazma, G/Ç yazma
  4. 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?

  1. Bir kez
  2. İki kez
  3. İşlemcinin bellek kapasitesine bağlıdır
  4. 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ü:

  1. 16 biti aynı anda sayar
  2. 16 tane adres hattı bulunur
  3. Kullanıcının geçici olarak 16 bit veri saklamasını sağlar
  4. 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?

  1. 246
  2. 278
  3. 250
  4. 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?

  1. CPU içindeki komutların yürütülmesini yönetir.
  2. CPU ile harici aygıtlar veya bellek arasında veri transferlerini yönetir.
  3. Veri üzerinde aritmetik ve mantıksal işlemler yapar.
  4. 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?

  1. CPU ile harici aygıtlar arasındaki veri transferlerini yönetir.
  2. Veri üzerinde aritmetik ve mantıksal işlemler gerçekleştirir.
  3. CPU içindeki komut akışını kontrol eder.
  4. 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?

  1. Veri üzerinde aritmetik ve mantıksal işlemler gerçekleştirir.
  2. CPU içindeki komut akışını kontrol eder.
  3. CPU ile harici aygıtlar arasındaki veri transferlerini yönetir.
  4. 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?

  1. Aritmetik ve mantıksal işlemlerin geçici sonuçlarını saklar.
  2. Bir sonraki işlenecek komutun adresini saklar.
  3. Komutlar arası boru hattı oluşturarak yürütme hızını artırır.
  4. 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)

KomutMakine koduBayt
RET, PUSH AXC3 · 501
MOV AX, BX89 D82
MOV AX, 1234hB8 34 123
MOV WORD PTR [BX+SI+1234h], 5678hC7 80 34 12 78 566

İş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?

  1. Onaltılı kodu ikiliye dönüştürür
  2. Ondalığı ikiliye dönüştürür
  3. Program sayacının içeriğini 1 artırır
  4. 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.

  1. GROUP
  2. OFFSET
  3. ORG
  4. 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?

  1. AX'in içeriğini BX'e taşıma anlamına gelir.
  2. Anlık adresleme modunu kullanır.
  3. Bayrak yazmacını etkilemez.
  4. 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?

  1. 40H, 40H
  2. 50H, 40H
  3. 50H, 50H
  4. 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?

  1. MOV DS, 1234h
  2. MOV [BX], [SI]
  3. MOV AL, BX
  4. MOV 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?

  1. 30
  2. 36
  3. 40
  4. 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?

  1. İşlemcinin hızını artırmak için
  2. Pin sayısını artırmak için
  3. Pin sayısını azaltmak için
  4. İş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?

  1. Öncelik kodlayıcı (Priority Encoder)
  2. Kod çözücü (Decoder)
  3. Adres mandalı etkinleştirme (ALE)
  4. Ç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?

  1. 20 bit genişliğindedir.
  2. Çift yönlü bir yoldur.
  3. Alt 16 hattı veri yoluyla çoklanmıştır (AD0–AD15).
  4. 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?

  1. VCC
  2. CLK
  3. RESET
  4. 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?

  1. CPU'ya güç sağlamak için
  2. Program sayacını sıfırlamak için
  3. Tüm sistemi sıfırlamak için
  4. 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?

  1. CPU'yu geçici olarak duraklatmak için
  2. CPU'yu sıfırlamak için
  3. CPU'ya güç sağlamak için
  4. 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?

  1. CPU'yu sıfırlamak için
  2. CPU'ya güç sağlamak için
  3. İç işlemleri senkronize etmek için
  4. 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?

  1. DEN'
  2. DT/R'
  3. M/IO'
  4. 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?

  1. IO/M (8086'da M/IO')
  2. DEN
  3. MN/MX
  4. 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?

  1. INTA
  2. RESET
  3. ALE
  4. 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?

  1. WR
  2. RD
  3. ALE
  4. 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?

  1. Minimum mod
  2. Maksimum mod
  3. Gerçek mod
  4. 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?

  1. Minimum mod
  2. Maksimum mod
  3. Uyum modu
  4. 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?

  1. 16
  2. 20
  3. 32
  4. 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?

  1. İşlenen gerçek veriyi saklarlar.
  2. Farklı bellek kesimlerinin başlangıç adreslerini saklarlar.
  3. Yürütülen mevcut komutu saklarlar.
  4. 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?

  1. 4
  2. 8
  3. 12
  4. 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?

  1. Aritmetik işlemlerin sonucunu saklar.
  2. Bir kesim içindeki ofset adresini tutar.
  3. Dizgi işlemlerinde sayaç yazmacı olarak hizmet eder.
  4. 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?

  1. Dizgi işlemleri sırasında kaynak işlenenin adresini tutar.
  2. Aritmetik işlemlerin sonucunu saklar.
  3. Dizgi işlemleri sırasında hedef işlenenin adresine işaret eder.
  4. 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?

  1. Komut işaretçisinin yüksek ve düşük baytlarını tutarlar.
  2. FLAGS yazmacının bayraklarını saklarlar.
  3. 8 bitlik veri üzerinde aritmetik ve mantıksal işlemler için kullanılırlar.
  4. 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?

  1. 8 bit
  2. 16 bit
  3. 32 bit
  4. 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?

  1. Yığın işaretçisi (SP)
  2. Taban işaretçisi (BP)
  3. Kaynak indis yazmacı (SI)
  4. 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?

  1. SP (yığın işaretçisi)
  2. IP (komut işaretçisi)
  3. ES (ek kesim)
  4. 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?

  1. Program sayacı
  2. Komut yazmacı
  3. Birikeç (akümülatör)
  4. 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?

  1. CS
  2. DS
  3. SS
  4. 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?

  1. Aritmetik ve mantıksal işlemlerin durumunu saklar.
  2. Mevcut komutun başlangıç adresini saklar.
  3. İşlem yapılan işleneni tutar.
  4. 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?

  1. Tuzak bayrağı (trap)
  2. Yardımcı taşıma bayrağı (auxiliary carry)
  3. Eşlik bayrağı (parity)
  4. 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?

  1. Taşma bayrağı (OF)
  2. Yön bayrağı (DF)
  3. Kesme bayrağı (IF)
  4. İ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?

  1. İşaret bayrağı
  2. Yardımcı taşıma bayrağı
  3. Eşlik bayrağı
  4. 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?

  1. Bir kesmenin bekleyip beklemediğini gösterir
  2. Dizgi işlemlerinin yönünü belirler
  3. CPU'nun ayrıcalık seviyesini kontrol eder
  4. 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?

  1. Yığın belleğinin en üstündeki (tepe) adresi içerir.
  2. 8 bitlik bir yazmaçtır.
  3. Veriyi kalıcı olarak saklar.
  4. 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?

  1. Yığın (stack)
  2. Bellek (memory)
  3. Yazmaç (register)
  4. 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?

  1. a) 251   b) −5
  2. a) 251   b) −123
  3. a) 123   b) −4
  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. 1 048 576 konum
  2. 2 097 152 konum
  3. 4 194 304 konum
  4. 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. 1 KB
  2. 64 KB
  3. 32 KB
  4. 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?)

  1. 36
  2. 39
  3. 32
  4. 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?

  1. 10
  2. 16
  3. 12
  4. 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?

  1. 8 KB
  2. 2 MB
  3. 16 MB
  4. 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

  1. Sonraki komutun fiziksel adresi nedir?
  2. MOV AX, CX komutu sonrası AX içeriği ne olur?
  3. 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?

  1. 0050h
  2. 5008h
  3. 5080h
  4. 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?

  1. 455CAh
  2. 0769Eh
  3. 390B4h
  4. 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?

  1. Yazmaç dolaylı adresleme
  2. Doğrudan adresleme
  3. Yazmaç adresleme
  4. 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?

  1. SP
  2. BP
  3. SI
  4. 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?

  1. Taban yazmaçlı
  2. Doğrudan
  3. İndeksli
  4. 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?

  1. 20124h
  2. 30124h
  3. 21024h
  4. 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
  1. 10
  2. 12
  3. 15
  4. 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?

  1. LEA dizinin ilk elemanını, MOV OFFSET adresini yükler.
  2. İkisi de dizinin ofset adresini BX'e yükler.
  3. OFFSET yalnızca kod kesimindeki etiketlerle kullanılır.
  4. 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?

  1. 00021h
  2. 00084h
  3. 00042h
  4. 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?

  1. PUSHF → IF = 0, TF = 0 → PUSH CS → PUSH IP → CS:IP ← vektör
  2. PUSH IP → PUSH CS → PUSHF → CS:IP ← vektör → IF = 0
  3. CS:IP ← vektör → PUSHF → PUSH CS → PUSH IP
  4. 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?

  1. Maskelenemez (non-maskable)
  2. En yüksek önceliğe sahiptir
  3. Yalnızca kenar tetiklemeli sinyal kullanır
  4. 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?

  1. TRAP
  2. RST 6.5
  3. INTR
  4. 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?

  1. PRINT bir prosedürdür, CALL PRINT ile çağrılır.
  2. PRINT_NUM'u kullanmak için programa DEFINE_PRINT_NUM ve DEFINE_PRINT_NUM_UNS satırları eklenmelidir.
  3. GOTOXY önce satırı, sonra sütunu alır.
  4. 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
  1. ABC
  2. AB, alt satırda C
  3. A, B, C ayrı satırlarda
  4. 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:
AB
C

Özet

Hızlı Tekrar (1 / 3)

SoruKonuAkılda kalsın
1Giriş ve MimariCISC, RISC ve EPIC üç ana komut kümesi yaklaşımıdır; 8086 CISC'tir
2Giriş ve MimariMikroişlemci = ALU + CU + yazmaçlar; bellek ve G/Ç dışarıda
4Giriş ve MimariSaat döngüsü ⊂ makine (yol) döngüsü ⊂ komut döngüsü
7Giriş ve MimariGetirme sayısı komut uzunluğuna bağlıdır
10Giriş ve MimariBIU: adres hesabı, önden getirme, yol işlemleri; EU: çöz ve yürüt
13Giriş ve Mimari6 baytlık kuyruk: getirme ile yürütme örtüşür
14Giriş ve Mimari8086 komutları 1–6 bayt (öneklerle daha uzun)
15Diller ve AssemblyAssembler satırı makine koduna çevirir; MOV AL,5 → B0 05
17Diller ve AssemblyORG 100h: .COM kodu 100h ofsetinden başlar
18Diller ve AssemblyMOV bayrakları etkilemez; hedef soldadır
20Diller ve AssemblyBellek → bellek MOV yok: yazmaç üzerinden iki adım
21Diller ve AssemblyKesime sabit yok, bellek-bellek yok, boyutlar eşit olmalı
228086 Pinleri40 pin; VCC = pin 40, GND = pin 1 ve 20
248086 PinleriALE: T1'de adresi dış mandala kilitler
278086 PinleriRESET sonrası CS:IP = FFFF:0000 → ilk komut FFFF0h

Özet

Hızlı Tekrar (2 / 3)

SoruKonuAkılda kalsın
288086 PinleriHOLD/HLDA: DMA için yolu devretme el sıkışması
318086 Pinleri8086: M/IO' = 1 bellek, 0 G/Ç (8088/8085'te ters)
348086 PinleriMN/MX' = 1 minimum, 0 maksimum (8288 + 8087)
368086 Pinleri20 adres hattı → 1 MB; 16 bit veri yolu
37Yazmaçlar ve BayraklarKesim yazmacı × 10h = kesimin başlangıç adresi
38Yazmaçlar ve Bayraklar8 genel (AX…SP) + 4 kesim + IP + FLAGS = 14
40Yazmaçlar ve BayraklarDizgi: kaynak DS:SI, hedef ES:DI, sayaç CX
46Yazmaçlar ve BayraklarVarsayılan: CS:IP, SS:SP/BP, DS:BX/SI/DI, ES:DI (dizgi)
47Yazmaçlar ve Bayraklar6 durum (CF PF AF ZF SF OF) + 3 denetim (TF IF DF) bayrağı
51Yazmaçlar ve BayraklarDF = 0 (CLD) ileri, DF = 1 (STD) geri
53Yazmaçlar ve BayraklarPUSH: SP − 2, sonra yaz; POP: oku, sonra SP + 2
54Sayı SistemleriBasamak ağırlıkları: 128 64 32 16 8 4 2 1
56Sayı Sistemleri1'e tümleyen = bitleri ters çevir; 2'ye tümleyen = ters + 1
58Sayı Sistemleri8 bit işaretli aralık −128…127; FBh = −5
59Bellek ve Adreslemen hat → 2ⁿ konum; 2¹⁰ = 1 K, 2²⁰ = 1 M, 2³⁰ = 1 G

Özet

Hızlı Tekrar (3 / 3)

SoruKonuAkılda kalsın
60Bellek ve AdreslemeKesim ≤ 64 KB, 16 baytlık paragraf sınırında başlar
61Bellek ve AdreslemeGereken hat = 2ⁿ ≥ kapasite olan en küçük n (50 GB → 36)
64Bellek ve AdreslemeSözcük okuma 2 bayt: AL ← [EA], AH ← [EA+1]
65Bellek ve AdreslemeBayt yükleme yazmacın diğer yarısını değiştirmez
66Bellek ve AdreslemeFiziksel adres = kesim × 10h + ofset (kesim bir hane sola)
69Bellek ve AdreslemeAynı fiziksel adrese birçok kesim:ofset çifti gider
70Bellek ve Adresleme[BX] yazmaç dolaylı; [1234h] doğrudan; [BX+4] bağıl
74Bellek ve AdreslemeLittle-endian: düşük bayt düşük adreste
75DeğişkenlerDB 1, DW 2, DD 4 bayt; DUP tekrarlar
76DeğişkenlerBYTE PTR w: sözcüğün düşük baytı (ilk adres)
78Kesmeler ve emu8086.incKesme: ISR çalışır, IRET ile kalınan yere dönülür
79Kesmeler ve emu8086.incVektör adresi = n × 4 (IP, sonra CS); IVT 1 KB
82Kesmeler ve emu8086.inc8086: NMI maskelenemez; INTR IF ile maskelenir
83Kesmeler ve emu8086.incMakro (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.

Son

Bölüm 12: Vize Çalışma Soruları
Sonraki bölüm: Bölüm 13: Final Çalışma Soruları
1 / 1 Sercan KÜLCÜ, Tüm hakları saklıdır.