Академический Документы
Профессиональный Документы
Культура Документы
Memory
(Hafıza) Kontrol
Kaydedicileri
Peripherals
(Çevre Durum
cihazları) Kaydedicileri
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
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
• 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.
• 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 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ı
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!!!’
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