Вы находитесь на странице: 1из 6

Ders Özeti

• Mikroişlemci ve Bilgisayar sisteminin yapısı


• Temel komut işleme süreci
Ders 2 • x86 kaydedicileri (registers)
• x86 hafıza temelleri
• Çevre cihazları
Bilgisayarlar Hakkında
• x86 assembly diline giriş
Öğr. Gör. Eren ERENER
AİBÜ/DMYO

PC’nin İç Organizasyonu Mikroişlemcinin Organizasyonu


CPU

Memory
(Hafıza) Kontrol
Kaydedicileri

Control (Kontrol yolu) Expansion


Bus ALU Control
CPU Address (Adres yolu) Genel Amaçlı
(genişleme BIU Address
Data (Veri yolu)
yolu) Kaydediciler
Kontrol Data

Peripherals
(Çevre Durum
cihazları) Kaydedicileri

Mikroişlemciler Basitçe İşlemciyi Oluşturan Parçalar

• Ardarda gelen kodları işleyen çiplerdir. • ALU (Aritmetik Lojik Unite)


– İşlemcinin kalbi olarak bilinen hesaplamaların yapıldığı yer
• Mikroişlemci çok basit hesaplamaları yapar
• Registers (kaydediciler)
– Aritmetik işlemler (toplama, çıkartma, çarpma, bölme)
– Flip-flop denilen elektronik elemanlardan oluşan işlemcinin içindeki
– Lojik işlemler (ve, veya, değil v.s.) çok hızlı hafıza üniteleri
– Veri taşıma (hafızadan veya hafızaya) – Sayıları ve kapasiteleri fazla değildir ama mikroişlemcinin en önemli
• Programları hızlı bir şekilde çalıştırır. parçalarıdırlar.
• Cache ( “Keş” diye okunur)
– SRAM’ dan yapılmış çip içindeki hafıza ünitesidir
– Çok hızlı data erişimine izin verirler
– Kaydedicilerden hızlı değillerdir fakat, harici hafızadan hızlıdırlar
– Cache bellek donanım tarafından kullanılır, kontrol edilir.

1
İşlemciyi Oluşturan Parçalar (basitçe) x86

• Bus Interface ( Komut, veri, kontrol ve adres bilgilerini taşıyan • Bügün dünyadaki bilgisayar sistemlerinin %90’ını oluşturan
yollar) işlemci ve işletim sistemini; Mikrosoft/Intel ikilisini ifade eder.
– Hafızaya veya giriş/çıkış cihazlarına ne zaman • x86 Özel bir komut kümesi ve mikroişlemci mimarisini ifade
erişim olsa iletişim bu ünite üzerinden gerçekleşir. eder.
• İşlemci çekirdeği x86 komut setine bağımlıdır ve bu komut seti
• Control and instruction unit (Kontrol ve komut son 20 yıldır bazı modifikasyonlar geçirmiş ve artmıştır.
birimi) • x86 bir CISC (Complex Instruction Set Computer) yani karmaşık
– İşlemcinin işlemesi gereken komutları hafızadan komut setini kullanan bilgisayardır.
alır - getirir – 20,000+ komut u ifade eder.
– Komutların kodlarını çözer – Bunlardan birçoğunu bu derste göreceksiniz.
– Program akışını kontrol eder

Temel Komut İşleme Süreci


• Basit olarak 3 adımda gösterebiliriz Gelişmiş Komut işleme süreci
– Hafızadan komutu al-getir
– Ne yapacağını belirlemek için kodunu çöz • Günümüzde mikroişlemciler pipeline denilen çoklu
– Komutu icra et işhatlarını kullanır.
• Eğer varsa hafızadan operandınıda getir
• Mikroişlemci bir programı işlerken bazı zamanlarda
• Sonucu sakla
yollar boşta (idle) kalır, bu boşta kalan zamanı başka
• Eski bilgisayarların komut işleme süreçi işler yaparak zamandan kazanma temeline dayanır.
Fetch Decode Execute Fetch Decode Execute …... Mikroişlemci • Bu sayede program daha kısa zamanda işlenmiş
1 1 1 2 2 2 olur.
• Komut sayısının çok fazla olduğu programlar bu
Busy Idle Busy Busy Idle Busy …...
Bus
(Yollar)
sayede çok hızlı çalışır.
Fetch: Al-getir
Decode: Kodunu çöz
Pipeline: Kelime karşılığı boru hattı demektir fakat bu kelimeyi çoklu işhattı olarak düşüneceğiz. İş hattı
Execute: İcra et
teknolojisini daha iyi anlamak için animasyonlara gözatınız.
Idle: Boşta
Busy: Meşgul

Pipelining (İş hattı teknolojisi) Registers (Kaydediciler)

• Kaydediciler geçici saklama birimleridir.


Fetch Fetch Fetch Fetch Store Fetch Fetch Load Fetch …... Bus (yollar) • Hafıza hiyerarşisinde ilk sırada yeralır
1 2 3 4 1 5 6 2 7
• Sistemdeki en hızlı hafıza birimidir
Instruction
Decode Decode Decode Decode Idle Decode Decode Idle Decode
7
…... Unit (komut
birimi)
• Amaçları
1 2 3 4 5 6
– Aritmetik/lojik işlemlerde veriler buralarda tutulur
Execution
Exec. Exec. Exec. Exec. Idle Exec. Exec. Idle Exec. Unit (icra – Veri veya komutların bulunduğu hafıza bölgelerini gösterir
1 2 3 4 5 6 7 birimi)
– Kontrol bilgilerini üzerlerinde tutarlar
Hafıza Talebi Hafıza talebi

Fetch: Al-getir
Decode: Kodunu çöz
Exec.: İcra et
Idle: Boşta
Memory request: Hafıza talebi
Store : Yükle (sakla)

2
x86 Registers (x86 kaydedicileri) Genel Amaçlı Kaydediciler
General Purpose Special Registers
(Genel Amaçlı) (Özel kaydediciler) Index Registers • Accumulator (AH,AL,AX,EAX)
Accumulator
AH AL (indeks kaydedicileri) – Matematiksel hesaplamalarda akümülatör görevi üstlenir
AX Instr Pointer IP
EAX EIP Stack Pointer SP • Base (BH,BL,BX,EBX)
BH BL Flags FLAG ESP
Base
BX EFLAG
– Hafıza bölgelerini işaret eder
Base Pointer BP
EBX

CH CL Segment Registers
EBP • Count (CL,CH,CX,ECX)
Count Dest Index
CX (Segment kaydedicileri) DI
– Döngülerdeki dönme sayısını içinde tutar
ECX EDI
CS Code Segment Source Index SI
– Otomatik olarak arttırılıp azaltılabilir
DH DL
Data
DX
DS Data Segment ESI
• Data (DL,DH,DX,EDX)
EDX ES Extra Segment
SS
– Hesaplamalardaki verileri tutar
Stack Segment
Accumulator: Akümülatör
Base: Taban
Dest: Hedef
Source: Kaynak FS – mul/div (çarpma/bölme) komutlarında MSB olarak kullanılır
Count: Sayıcı Code: Kod
GS
Instr Pointer : Komut işaretçisi Data : Veri
Flags: Bayraklar
Stack : Yığın

Genel amaçlı kaydediciler hakkında Index Registers (İndeks kaydedicileri)

• 80386 ve sonrası mikroişlemcilerin GA kaydedicileri • SP, ESP


aynıdır. – Yığın işaretçisi (daha sonraki derslerde gösterilecek)
• Genel amaçlı kaydedicilerin hepsi nin ayrı bir özelliği • BP, EBP
vardır. – Yığın hafıza bölgesini adreslemede kullanılır
• Bu kaydedicileri ne işe yaradığını daha sonra • SI, ESI, DI, EDI
örneklerle göreceğiz – Source/Destination (kaynak/hedef) kaydedicileridir
• Kaydedicileri daha verimli kullanmak için çok örnek – Dizilerin başlangıç adreslerini gösterirler
yapmanız gereklidir. – Dizi ve benzeri data (veri) tipleri üzerinde işlem yaparken
kullanılırlar.

Segment Kaydedicileri Özel kaydediciler

• CS • IP, EIP
– Komutların saklı olduğu hafıza bölgesini işaret eder – Mikroişlemcinin işleyeceği bir sonraki komutun hafıza
• DS adresini gösterir
– Bir programda kullanılan verilerin bulunduğu hafıza bölgesini • FLAG, EFLAG
işaret eder – Bayrak kaydedici, değişik işlemler sonucunda yenilenen bir
• SS grup bit ten oluşur, örneğin carry (elde), overflow (taşma) ,
zero (sonuç sıfır) bayraklarının herbiri bir bittir.
– Hafızadaki yığın bölgesini işaret eder
– Dallanma komutlarında çok kullanılır.
• ES,FS,GS
– Şayet gerekli olursa ek olarak kullanılacak olan veri
bölgelerini işaret eder.
Segment: Hafızanın belirli bir amaç için ayrılmış olan bölümünü ifade eder

3
Memory (Hafıza) x86 Hafıza Adresleme Modları
• Hafızayı genellikle byte lardan oluşan bir dizi olarak
görürsünüz. • Adres Bus ın genişliği adreslenebilecek bellek miktarını gösterir
• Adreslenebilen bellek miktarı sistemde kullanılan fiziksel belleği
• Fakat gerçek hafıza organizasyonu biraz farklıdır göstermez.
Odd Bank Even Bank Odd bank : Tek numaralı adreslerle belirtilen bellek mahalleri
• Real mode addressing (gerçek modda adresleme)
F 90 87 E
Even bank : Çift adresler... – 8086 işlemcisinin çalışma modudur, 20-bit address bus, 16-bit data
Data bus : Veri yolu
bus
D E9 11 C
– Gerçek modda sadece 0 dan 0FFFFFh adresine kadar olan hafızayı
B F1 24 A
kullanabiliriz. Ayrıca sadece 16 bitlik kaydedicileri kullanabiliriz.
9 01 46 8 Bellek mahalini gösteren adres
• Protected mode addressing (korumalı mod adresleme)
7 76 DE 6
– 32-bit address bus, 32-bit data bus, 32-bit registers (kullanılabilir)
5 14 33 4
– 4 Gigabyte lık hafıza adreslenebilir.
3 55 12 2
Bellek mahalinde 46 datası var
– 80386 ve üstü işlemciler hem gerçek hemde korumalı modda
1 AB FF 0
çalışabilirler.

Data Bus (15:8) Data Bus (7:0)

X86 da gerçek mod adresleme Peripherals (Çevre üniteleri)

• Hafıza Adres formatı Segment:Offset şeklindedir. • Aşağıda bazı çevre cihazlarını görüyorsunuz
• Gerçek adresi bulmak için: – USB veya seri port
– Segment adresi 4 bit kaydırılır – Timers (zamanlayıcı devre)
– Ve offset adresine eklenir – Programmable Interrupt Controllers (programlanabilen
kesme kontrol devreleri)
• Örnek: 2222:3333 için gerçek adres: 25553
– Network cards (ethernet kartları)
• Örnek: 2000:5553 için gerçek adres : 25553 – Ekran kartı, yazıcı, tarayıcı vs.

Çevre Üniteleri Örnek

• Çevre üniteleri CPU nun hafıza ile iletişim kurduğu • Bir ağ kartı
gibi kontrol, adres ve veri yollarından CPU ile iletişim • I/O Adresi 7400-743F
kurarlar. arasında
• Memory haritasında
• I/O adres bus 16 bit genişliğindedir, bu yüzden X86 C0200000-C0200FFF
türü işlemcilerde 65,535 I/O port u vardır. arasını kullanıyor
• I/O data bus 16 bit genişliğindedir. • Bu cihaza farklı komut
tiplerini kullanarak
• Çevre üniteleri I/O hafıza haritalarında veya sadece
erişebiliriz.
hafıza haritalarında gösterilebilirler.
• Daha ayrıntılı bilgileri
ilerleyen derslerde
göreceğiz…

4
Neden Assembly ? Assembly Dosyaları

• Assembly hızlı programlar yazmanızı sağlar • Basitçe 4 kısımdan oluşur


• Araştırma sorusu: Assembly dili neden hep tercih • Labels (Etiketler)
edilmez? – Değişkenler özel bellek mahallerini gösteren etiketlerdir
• Assembly sistem programlarının yazılımında – Etiketler programlarınızın dalması gereken alt programlarının
gereklidir. hafızadaki adreslerini işaret eder.
– Compilers (derleyiciler) • Instructions/Directives (Komutlar ve Direktifler)
– Operating systems (işletim sistemleri) • Yorumlar veya açıklamalar
• Assembly yeni mikroişlemcilerin tasarımında ve • Data (Veriler)
dizaynında gerekli bir dildir.
• DSP ler ve programlanabilen cihazlar için gereklidir.

Yorumlar / Açıklamalar! Labels (Etiketler)


; Etiketler komutun veya alt programın
; Açıklamalar program satırlarınızın karşısına, başladığı yerin başına “:” işareti ile
; noktalı virgül işaretinden sonra yazılır. kullanılırlar
; aynı satır veya satırlarda programın ne iş yaptığı
; veya başka açıklamalar için kullanılırlar
; ayrıca geriye dönüp program kodlarına baktığımızda
gecikme:
; ne yapmak istediğimizi hatırlamamıza yardımcı diger_rutin:
; olurlar
Gibi...

Değişkenler Direktifler
; aşağıdaki örnekleri inceleyelim
; direktiflere birkaç örnek verelim
sayı1 DB 255
• PROC: Program içinde başka yardımcı programlar
sayı2 DB 0FFh yazdığımızda bu direktifi kullanırız
sayı3 DW 1234h • .data veya .code : Hafıza bölgesini oluşturuken
dizi1 DB 12, 34, 56, 78, 90 • EQU: sabit değerleri tanımlarken kullanılır
dizi2 DW 12, 34, 56, 78, 90
hdizi1 DB ‘www.mikroislemciler.com!!!’

etiketler Direktifler veriler

5
Örnekler Komut Örnekleri
; bir prosedü
prosedür oluş
oluşturalı
turalım
; Bazı
Bazı basit komutlar
Ana proc
mov ax, [sayi
[sayi1]
1] ; köşeli paranteze dikkat
..... ;noktalı
;noktalı yerlere mov dx,
dx, dizi1
dizi1 ; köşeli parantez yok
..... ;program kodları
kodlarını call diger_rutin
..... ;yazacağı
;yazacağızz jmp gecikme
Ana endp mov bx,
bx, [sayi
[sayi2]
2]
;Kod segment baş
başlangı
langıcını belirleyelim
.code ;Kod hafı
hafıza bö
bölgesi baş
başlangı
langıcı gecikme:
...
....
...
.... ...

Komut Örnekleri
.data
sayi1
sayi1 db 55h ; 55
sayi2 db 0AAh ; AA Bir Sonraki Derse Kadar
sayi3
dizi1
dizi1
db
db
12h
‘Hello’
Hello’
;
;
12
48 65 6C 6C 6F 00
İyi Çalışmalar!
.
.
.code
mov al, [sayi1] ; A0 00 00
mov bx,
bx, sayi3 ; BB 02 00
inc bx ; 43
mov al, [bx]
bx] ; 8A 07

Вам также может понравиться