Mikro İşlemciler

Debug Programı ve Mikro İşlemci Komutları

Yeni bir Uzaktan Egitim makalesinde sizlerle beraberiz.

Mikroislemcinin çalisma mantigini anlamak amaciyla küçük bir uygulama yapalim. Bilgisayarinizda C:\ sürücünde bilgi.txt isimli bir dosya olusturunuz. Içerisine Ali, Veli, Selami bilgilerini yaziniz ve kaydediniz. Bu programi bellege kaydettigimizde mikroislemcinin bu dosya ile ilgili islemleri nasil gerçeklestirdigine bir bakalim. Bu amaçla isletim sisteminde olan Debug programindan yararlanacagiz. Öncelikle Debug ile ilgili kisa bir bilgi verelim.

Debug Programi

Assembly komutlarinin nasil çalistiklarini deneyerek görmek ve yazilan programlarin amacina uygun çalisip çalismadigini anlamak varsa hatalarini düzeltmek için DOS'un DEBUG.COM isimli programi kullanilmaktadir. Her ne kadar daha gelismis, kullaniciya hitap eden debuger'lar olsa da kolay bulunulabilirligi ve basit uygulamalarda sagladigi rahatlik sayesinde tercih nedenidir. DEBUG programini kullanabilmek için komutlarini bilmek gereklidir. Burada DEBUG programinin bazi komutlarini örnegimiz yardimi ile açiklamaya çalisacagiz.

Öncelikle Baslat / Çalistir ekraninda cmd komutunu yazarak Dos altina düselim.

Burada cd\ komutunu kullanarak C:\ kök dizinine gelelim.

Burada; C:\>Debug bilgi.txt komutunu yazarak bilgi.txt dosyasinin mikroislemci yardimi ile bellege yüklenmesini saglayalim.

Simdi r komutunu kullanarak islemcinin bu dosyayi çalistirmak için kullandigi register ve pointer adreslerine bakalim.

Yukarida görüldügü gibi, mikroislemci dosya ile ilgili bütün islemleri 14 adet olan registerlar yardimi ile yapmaktadir. Bu registerlari gruplara ayirabiliriz.

Segment registerleri: 4 tanedir. (CS,DS,SS,ES)

Genel amaçli registerler
a) Data registerleri: 4 tanedir. (AX,BX,CX,DX)
b) Pointer ve index registerleri: 4 tanedir. (SP,BP,SI,DI)

Instruction Pointer: 1 tanedir. (IP)

Program Status Word: 1 tanedir.(PSW)

Simdi d komutunu kullanarak segment ve offset adresleriyle beraber bilgi.txt dosyasinin içerigini görelim. Sol tarafta Segment:Offset ikili adresleri, ortada makine diline çevrilmis haliyle bilgi.txt içerigi, sag tarafta ise dosyanin içinde yer alan gerçek bilgiler görülmektedir. Sol tarafta yer alan bilgiler dosyanin boyutunu göstermektedir. Bu bilgiler bilgi.txt dosyasinin sabit diskte yerini göstermek için kullanilir. Ortada yer alan Ascii karakter seti seklinde yer alan bilgiler ise, mikroislemci ve bellek tarafindan kullanilan bilgilerdir. Sag tarafta yer alan bilgiler ise, kullanicilarin görebildigi, anlayabildigi sekilde çikis ünitelerinde kullanilmaktadir.

Burada ise, bilgi.txt içinde yer alan Ali, Veli, Selami bilgilerinin saklandigi adres bloklari DS yardimi ile görüntülenmektedir. Dikkat ederseniz segment adresi DS ile tutulmakta, offset adres araligi araya virgül konularak tanimlanmaktadir.

Burada ise, u komutu kullanilarak bilgi.txt dosyasinin Assembly dili karsiligi görüntülenmektedir.

Yukaridaki ekranlarda 13B5:0100 yapisinda görüntülenen adresler için kullanilan bellek adresleri ikilisi olan  Segment:Offset hakkinda bilgi verelim.

Bellek programlari olusturan komutlari ve program tarafindan, üzerinde bilgi islem yapilacak verileri içeren ya da saklayan ünitedir. Komutlar ve veriler, bilgisayarin belleginde birer byte’lik sayilar halinde yer alir. Bellekteki her sey sayilardan ibarettir. Icra aninda, komutlarin veri olarak ya da verilerin komut olarak degerlendirilmemesi için, oldukça düzenli bir bellek organizasyonu gerekmektedir. Bu da normal olarak programcinin sorumlulugu altindadir.

Bilgisayar belleginin binlerce ufak hücreden meydana geldigini düsünebiliriz. Her bir hücre, 8 bit uzunlugundadir ve bilindigi gibi 8 bitlik her bir birim byte olarak isimlendirilmistir. Bellekteki her bir byte’nin, diger bir deyisle her bir bellek bölgesinin bir adresi vardir. Bu adresler 0’dan baslayan pozitif tamsayilardir. Bellegin ilk byte’nin adresi 0, son byte’nin adresi ise, bellegin büyüklügünü gösteren sayinin bir eksigidir.

Her bilgisayarin bellegi degisik büyüklüklerde olabilir. 8086/8088 Mikro islemcisi ile kullanilabilecek maximum bellek büyüklügü 1,048,576 byte ya da kisaca 1 Megabyte’dir. Asagidaki sekil, bellegi olusturan hücreler ve bunlara karsilik gelen bellek adresleri hakkinda kabaca bir fikir verebilir; Bellek içindeki herhangi bir lokasyonun adreslenmesinde, 2 byte uzunlugundaki isaretsiz tamsayilar kullanilir. 2 byte ile ifade edilebilecek en küçük isaretsiz sayi 0, en büyük isaretsiz sayi ise 65535’dir. O halde, 2 byte uzunlugundaki bir sayi ile, bellegin sadece ilk 65536 byte’i adreslenebilecektir. Oysa, 8086/8088 mikro islemcisi için, bellegin bu sayiyi asarak 1,048,576 byte’dan olusabilecegini biliyoruz.2 byte uzunlugundaki sayilar ile, bu genisligindeki bir bellegin, tüm lokasyonlarinin adreslenemeyecegi açiktir.


İlgili Makaleler
Debug Programı ve Mikro İşlemci Komutları
Debug Programında UnAssemble Komutu ve Kullanımı
Debug Programında Name Komutu ve Kullanımı
Debug Programında Write Komutu ve Kullanımı
Debug Programında Quit Komutu ve Kullanımı
Debug Programının Çalıştırılması
Ascii Karakter Kümesini Görüntüleyen Programın Debug Editörüyle Yazılması
Debug Editöründe Yazılan Programın Çalıştırılması
Debug Editöründe Yazılan Programın Com File Olarak Kaydedilmesi
Debug Editörüyle Yazılan Programın İşletim Sisteminde Çalıştırılması
Debug Programında Trace Komutu ve Kullanımı
Debug Programında Register Komutu ve Kullanımı
Debug Programında Assemble Komutu ve Kullanımı
Debug Programında Go Komutu ve Kullanımı

Yorum Ekle
   
Kötü
İyi