ÖZT Ders 3 Hafıza Hakkında Hafızayı adresleme Veri (data) tipleri MOV komutu dresleme modları Komut formatı Öğr. Gör. ren RNR İBÜ/DMYO Temeller x işlemcilerin hafıza yapısı byte adreslenebilir şeklindedir. dres yolunda bir adres bilgisi oluştuğunda, bu adres bilgisi hafızada sadece 1 bytelık bilginin yerini gösterir. Byte temel hafıza birimidir Fakat bir byte tan daha fazla bilgileri bir defada hafızayı adresleyerek, okuyup/yazabiliriz. 1-bit words, ard-arda gelen byte lar, 3-bit doubleword, ard-arda gelen byte lar, şeklinde düşünülebilir. Lojiksel ve Hiziksel Hafıza Lojik Hafıza, bilgisayar programcısına görünen hafıza şeklidir. Birçok byte, bir dizi (array) byte olarak görünür byte, word veya doubleword şeklindeki bilgileri okuyup, yazabiliriz. Programcı hafızadan bilginin nasıl alınıp-getirildiği ile ilgilenmez, sadece hafıza erişiminde, bilginin 1, veya byte lık olup olmadığı ile ilgilenir. Fiziksel Hafıza Hafıza hücrelerinin fiziksel organizasyonu, programcı tarafından görünmez. Fiziksel hafıza birimi, data bus (veri yolu) genişliği ile aynıdır. Örneğin işlemcisinde bir defada hafızaya 1 bit yazılırken, 3 işlemcisinde bu 3 bittir. nın Fiziksel Hafıza Yapısı x byte düzeni. adresten byte okunursa: SONUÇ=. adresten word okunursa: SONUÇ =B. adresten doubleword okunursa: SONUÇ =551B. ve 1. bellek konumları ve B bilgisini taşıyor. Fakat. adresten word okunursa bu işlemci tarafından B olarak değerlendiriliyor x ters sıralı byte düzenini kullanır. B örneğinde; Küçük adreseki () bilgi, düşük değerlikli byte olarak değerlendirilir, Büyük adresteki (1) bilgi ise, yüksek değerlikli byte olarak değerlendirilir.
BYT DÜZNİ BYT SIRLMSI Ters sıralı ve Düz sıralı yapı; Düz sıralı erişimde bilgi, talep edilen adresten direk olarak alınır ve aynen değerlendirilir. Birçok UNIX server da bu düzen kullanılır. Byte düzeni işlemcinin mimarisi ile alakalıdır.. dresten word okunduğunda data(15:)=b,data(7:)= bytelık bu bilgi data bus ta doğru şekilde görülür Bu sıralı hafıza erişimidir. BYT SIRLMSI BYT SIRLMSI Peki 1. adresten word okursak ne değişir? Bu da geçerli bir hafıza erişimidir, herzaman tek numaralı adreslerden hafızaya erişebilirsiniz, Burada da sonuç 1B olur. Fakat data bus ta görülen byte lar sıralı değildir! data(15:)=b,data(7:)=1 Hafızadan 1den fazla byte okunduğunda, bu bilgilerin yerini gösteren adres bus taki adres bilgisi, işlemci mimarisi tarafından düzenli bir sıraya konulur. dres 1 den word okuduğumuzda, adres deki bilgi data bus a yüksek değerlikli byte olarak ve adres 1 deki bilgi düşük değerlikli byte olarak yüklenmeli. Günümüzdeki mikroişlemciler bu işi programcıya bırakmadan kendileri hallederler... BYT SIRLMSI VRİ (DT) TİPLRİ Peki hafızadaki sıralı olmayan bilgilerin bir dezavantajı varmıdır? Şayet programınızın hızlı çalışmasını istiyorsanız VT! İşlemci sıralı olmayan hafıza erişiminde; odd byte ı okur (1. hafıza erişimi) even byte ı okur (. hafıza erişimi) Sonra bu iki byte ı sıraya koyar Sıralı hafıza erişiminde ise işlemci; even byte ı okur (tek hafıza erişimi yapılır) Sıralı erişim en az iki kat daha hızlıdır. Tam sayılar Bit ler, Nibble lar, Byte lar, Word ler, Doubleword ler İşaretli/İşaretsiz Kayar noktalı sayılar Tam sayılardan farklı bir formatları vardır. Metin (Text) 7-bit SII karakterler (harfler, karakterler) -bit SII kodlama, fazladan 1 adet grafik sembolünü içerir. String (Harf-dizi): Karakterlerin ard-arda gelmesinden oluşur. Dökümanlar (Document): Dizilerden oluşur.
VRİ (DT) TİPLRİ VRİ (DT) TİPLRİ Diziler (array) Sayı ve karakterlerin sıralanmasından oluşur Dosyalar (Files) Resim (.jpg,.gif,.tiff, ) Video (MPG,.avi, Quicktime, ) Ses (.wav,.mp3, ) Herşey bilgisayarın hafızasındaki byte ların belli bir düzende sıralanmasından meydana gelir. Gerçekte veri tipleri, hafızaya nasıl eriştiğinize ve bu byte ları nasıl kullandığınıza bağlıdır! 1 adet bitlik tamsayı adet 1 bitlik word adet 3-bitlik doubleword nlamsız bir harfdizi Komutlar ve operanlar GRÇK (RL) ve KORUMLI (PROTTD) MOD PROTTD Gerçek modda hafızanın ilk megabyte ını (h-fh) adresleyebiliriz, -bit lik address bus ile sınırlı kalırız ve kaydedicilerin 1-bit lik kısımlarını kullanabiliriz. Korumalı modda hafızanın Gigabyte ını adresleyebilir 3-bit lik address bus ı ve 3-bit lik kaydedici leri kullanabiliriz. Not: Yukarıdaki örnek 3 bitlik bir mikroişlemci için verilmiştir. ve üstü işlemciler için geçerlidir Hafıza erişimi segment tabanlıdır Segment leri hafızayı koruma altına almak için oluşturulmuş bölgeler gibi düşünebiliriz (protected kelimesi buradan gelmiştir) Korumalı modda hafızayı anlamak ve düşünmek çok karışıktır Sabit segment:offset, segment 1-bit, offset 1-bit veya 3-bit Segment bölgesi bir pointer (işaretçi) tarafından kullanılır. Segment table (segment tablosu) fiziksel hafızada segmentin başlangıç adresini içerir Segment tablosunu kullnıcı modunda (user mode) düzenleyemezsiniz fakat ayrıcalıklı modda (privileged mode) segment tablosu düzenlenebilir, Örneğin işletim sistemi yazılıken... SGMNTLRİN KULLNIMI MOV KOMUTU Programınızın lojik bölümleri Orijinal SP SS:BP SS:SP S:IP Memory Kullanılan Yığın (stack) Kullanılmayan Yığın (stack) Kod (ode) (programınız) SS Veriyi taşı Hafızadan kaydediciye den hafızaya den başka bir kaydediciye Hafızadan hafızaya taşıma OLMZ! Kullanım şekli MOV hedef, kaynak Hedef (destination) ve kaynak (source) hafıza adresi veya kaydedici olabilir DS:DI DS:SI Veri (Data) (değişkenler) S DS
DRSLM MODLRI DRSLM MODLRI Register, en hızlısı! MOV X, BX MOV L, BL MOV DX, SI MOV DS, BX Kaynak ve hedef in boyutlarının aynı olması gerekir!!!!! Immediate ye bir değer yüklemede kullanılır MOV X, 13h Direct MOV X, [13h] Hafıza konumundan kaydediciye veri taşı 13h data segment te (DS) bir konumdur (adres) Register Indirect (base relative, veya indexed) dolaylı (taban göreli veya indeksli) MOV X,[BX] MOV X,[BP] MOV X,[SI] MOV X,[DI] Hafıza konumundaki bilgi kaydediciye deoplanır BX, SI, DI burada data segmentteki hafıza konumu dolaylı olarak gösterir BP stack segment teki konumu dolaylı olarak gösterir DRSLM MODLRI DRSLM MODLRI İL İLGİLİ ÖRNKLR Base plus index (base relative indexed) Taban artı-indeksli MOV X, [BX+DI] MOV X, [BX+SI] Taban BX veya BP, index SI veya DI Register relative göreli MOV X, [BX+13h] Parantez içindeki kaydedici sadece BX, BP, SI, veya DI olabilir Base relative plus index Taban göreli artı indeksli MOV X, [BX+DI+13h] MOV X, BX MOV X, DI MOV H, L MOV H, 1h MOV X, 13h MOV X, SBT MOV X, X MOV X, [13h] çıklama (omment) BX teki 1- bit lik değeri X e taşı DI daki 1- bit lik değeri X e taşı L deki - bit lik değeri H a taşı - bit lik 1H sayısını H a taşı 13h sayısını X e taşı SBT diye tanımlanmış sabit değeri X e taşı Değişken X değerini (adres yada offset) X e taşı 13h hafıza konumundan X e veri taşı dresleme Hafıza içeriği (Memory ontents) 9 D 9 F B 1 B 3 B lsb msb B lsb msb 1 3 1 DT DT1 DT1 DT1 MOV X, [X] DS:X hafıza konumundan X e veri taşı 1 lsb msb DRSLM MODLRI İL İLGİLİ ÖRNKLR DRSLM MODLRI İL İLGİLİ ÖRNKLR çıklama (omment) dresleme Hafıza içeriği (Memory ontents) çıklama (omment) dresleme Hafıza içeriği (Memory ontents) MOV [X], X MOV X, [DI] MOV [DI], X MOV X, [BX] X teki değeri DS:X ile gösterilen hafıza konumuna taşı DS:DI ile gösterilen 1- bit lik değeri X e taşı DS:DI hafıza konumuna X deki değeri taşı DS:BX in gösterdiği hafızakonumundaki 1-bit lik bilgiyi X e taşı İndeksli İndeksli Kaydedic 3 lsb msb B 5 DT1 9 5 B 7 MOV [BX + DI], X MOV X, [BX + DI + 13h] MOV word [BX + DI + 13h], 57h DS:[BX+DI] ile gösterilen hafıza konumuna X teki bilgiyi yükle DS:BX + DI + 13h ile gösterilen hafıza konumundaki bilgiyi X e taşı 57h değerini BX + DI + 13h ile Taban artı indeks Taban göreli artı indeks Taban göreli artı indeks 9 1 B 1 3 1 7 1 3 1 7 5 MOV [BX], X X teki 1- bit lik bilgiyi DS:BX in gösterdiği hafıza konumuna taşı 9 7 MOV [BP], X X teki 1- bitlik bilgiyi SS:BP ile 9 MOV X, TB[BX] DS:BX + TB ile gösterilen haffıza konumundaki değeri X e taşı Göreli B 7 lsb msb MOV TB[BX], X X teki değeri DS:BX + TB ile Göreli 9 7 lsb msb MOV X, [BX + DI] DS:BX + DI ile gösterilen hafıza konumundaki değeri X e taşı Taban artı Indeks B 1
MKİN DİLİ GNL KOMUT FORMTI Herşey (komutlar, operandlar, data lar) hafızada byte lar halinde depolanır Programınızda hata ayıklarken (debuging) byte lar şeklinde hafızaya dizilmiş bu bilgilerin anlamlarını çözmeye muktedir olmanız gerekir. Çünkü komut ve komuttan sonra gelen byte ları ayırd edip yorumlamanız gerekir. x komutları kompleks yapıdadır, komut satırlarının boyutları 1 ile 13 byte arasında değişebilir Op-kod Mod Hafıza Konumu Veri/ Operandı yok Örnek: N DT - bit data ile Örnek: MOV L, 15 DT1 1- bit data ile Örnek: MOV X, 13h DISP DISP1 DISP DISP1 - bit hafıza konumu ile Örnek: J +5 1- bit hafıza konumu ile Örnek: MOV L, [13h] dresleme modu kaydediciden kaydediciye Örnek: MOV L, H dresleme modu & - bit hafıza konumu Örnek: MOV [BX + 1], X dresleme modu & 1- bit hafıza konumu Örnek: MOV [BX+13], X KOMUT SSLRI Her komut hafıza konumunu gösteren tek-bir operanda sahip olabilir Operand ile komut uyumlu olmalıdır, örneğin mov al,bx hatalı bir komut satırıdır, L nin içine BX sığmaz dresleme modu, hangi kaydedicilerin komut tarafından kullanılacağını gösterir Veri boyutu mutlaka belirli olmalıdır, örneğin hafıza konumuna 1h mı yoksa 1h mı taşıyacağımızı mutlaka komur satırına belirtmeliyiz! MOV BYT [BX], 1h MOV [BX], WORD 1h