Debug Komutları C:\>DEBUG - Çizgi işareti artık debug programının komut kabul etmeye hazır olduğunu belirtmektedir.



Benzer belgeler
6. Mikroişlemcili Geliştirme Sistemleri

b) Aritmetik İşlem Komutları

Araş. Gör. Abdulkerim ŞENOĞLU Araş. Gör. Mehmet AYAN Araş. Gör İbrahim Kök. BM 310 Mikroişlemciler Dersi Laboratuvarı (LAB2)

İŞLEMCİ DURUM KAYDEDİCİSİ (PROCESSOR STATUS REGISTER)

Assembly Programlama Dili T e m m u z

MTM 305 MĠKROĠġLEMCĠLER

MTM 305 MĠKROĠġLEMCĠLER

Quiz:8086 Mikroişlemcisi Mimarisi ve Emirleri

Adresleme Modları. Mikroişlemciler ve Mikrobilgisayarlar

80x86 MICROPROCESSOR Instructions

MTM 305 MİKROİŞLEMCİLER

Assembly. Programlama Dili. T e m m u z

Program Kontrol Komutları. Mikroişlemciler ve Mikrobilgisayarlar 1

Bölüm 5: ARITMETIK VE MANTIK IŞLEM YAPAN KOMUTLAR

Ders 3 ADRESLEME MODLARI ve TEMEL KOMUTLAR

W SAYAC SAYAC SAYAC. SAYAC= ise, d=0 W

8086 dan core2 ya yazaç yapısını tanımak. Bayrak yazacının içeriğinde yer alan bayrakların görevlerini tanımlamak. Real mod çalışmada bellek

Sistem Programlama. Kesmeler(Interrupts): Kesme mikro işlemcinin üzerinde çalıştığı koda ara vererek başka bir kodu çalıştırması işlemidir.

Basit Bootstrap Uygulaması

MTM 305 MĠKROĠġLEMCĠLER

Assembly Programlama

MICROPROCESSORS ESA 86/88-3 KULLANIM KLAVUZU

ÖNEMLİ AÇIKLAMA: Bu derslerdeki sunumların kısa bir özetini göstermek için hazırlanmıştır. Burada türkçeleştirilmemiş olan kısımlar sorulmayacak

MTM 305 MİKROİŞLEMCİLER

Aritmetiksel Komutlar

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUARI İKİLİ TABANDA ÇOK BAYTLI ÇARPMA

CISC Complex Instruction Set Computers

(5 soru seçerek cevaplandırınız. Seçilen soru numaralarını yukarıdaki çizelgede işaretleyiniz) Sınav süresi 100 dakikadır. Başarılar dileriz.

Mikrobilgisayar Donanımı

JZ TEST3 (7/3) 1 makine çevrimi süresi

Bahar Dönemi BIL382 Mikroişlemcili Sistem Lab. Vize Sınavı,

Özet DERS 5. Şu ana kadar bilmeniz gerekenler... İşaretsiz Çarpma. Bayraklardaki Durumlar. İşaretli Çarpma

BM-311 Bilgisayar Mimarisi

8086 Mikroişlemcisi Komut Seti

Bölüm 4 Veri Aktarma Komutları

İÇİNDEKİLER 1. KLAVYE KLAVYE RB KLAVYE RBHIGH DİSPLAY... 31

AND Komutu. and hedef, kaynak

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

CP1E KM-N2-FLK MODBUS HABERLEŞMESİ

SIMAN KULLANIM KILAVUZU

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUVARI KESMELİ GİRİŞ/ÇIKIŞ

Bildiğiniz gibi programları oluşturan kodlar ve veriler hafızaya yüklendikten sonra işlemci tarafından satırsatır icra edilirler.

Mikrobilgisayar Mimarisi ve Programlama

SAYI SİSTEMLERİ. 1. Sayı Sistemleri. Sayı Sistemlerinde Rakamlar

Bölüm 3: Adresleme Modları. Chapter 3: Addressing Modes

Assembly Language Programming

Ders Özeti. Ders 2. PC nin İç Organizasyonu. Mikroişlemcinin Organizasyonu. Basitçe İşlemciyi Oluşturan Parçalar. Mikroişlemciler

BIL 362 Mikroilemciler Dersi Arasınav Cevapları 3 Temmuz 2007

MTM 305 MĠKROĠġLEMCĠLER

BQ101 GSM Access Kontrol Ünitesi Windows Programı. Kullanım Kılavuzu. Doküman Versiyon: BQTEK

BÖLÜM 7 Kesmeler.

Üst düzey dillerden biri ile yazılmış olan bir programı, makine diline çeviren programa derleyici denir. C++ da böyle bir derleyicidir.

16 bitlik işlemciler basit olarak 8 bitlik işlemciler gibi Kaydedici ALU Zamanlama/kontrol

Assembly Dili Nedir? Assembly dili biliyorum derken hangi işlemci ve hangi işletim sistemi için olduğunu da ifade etmek gerekir.

DIGIAC 2000 Deney Seti PAT İŞLEMCİ KARTI :

EEM 306 Mikroişlemciler ve Lab. Doç.Dr. Mehmet SAĞBAŞ

DERS 12 PIC 16F84 ile KESME (INTERRUPT) KULLANIMI İÇERİK

MTM 305 MĠKROĠġLEMCĠLER

MTM 305 MİKROİŞLEMCİLER

C#(Sharp) Programlama Dili

80X86 SEMBOLİK MAKİNA DİLİ

3.2 PIC16F84 Yazılımı PIC Assembly Assembler Nedir?

B.Ç. / E.B. MİKROİŞLEMCİLER

MTM 305 MĠKROĠġLEMCĠLER

TEKNİK RESİM. Arş. Grv. M. Adil AKGÜL İTÜ İnşaat Fakültesi Hidrolik Ana Bilim Dalı.

DENEY III RAPORU MİKROİŞLEMCİ UYGULAMALARI LABORATUVARI

İşletim Sistemlerine Giriş


1 NEDEN SEMBOLİK MAKİNA DİLİ ÖĞRENİLMELİDİR? MİKROİŞLEMCİLERİN ÇALIŞMA BİÇİMLERİ TİPİK BİR RAM İN YAPISI

MTM 305 MĠKROĠġLEMCĠLER

Yazılım Mühendisliğine Giriş 2018 GÜZ

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

HSancak Nesne Tabanlı Programlama I Ders Notları

KOMUT AÇIKLAMALARI VE ÖRNEKLERİ

C Konsol Giriş Çıkış Fonksiyonları

K uark projesi. Temel Özellikler :

Linux ta komutlar hakkında yardım almak için aşağıdaki komutlar kullanılır : - man - info - whatis - apropos

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUVARI OLAYLARI ZAMANLAMA

# PIC enerjilendiğinde PORTB nin 0. biti 1 olacak #PIC enerjilendiğinde PORTA içeriğinin tersini PORTB de karşılık gelen biti 0 olacak

LCD (Liquid Crystal Display)

BIL 362 Mikroilemciler Dersi Final Sınavı Cevapları

C Programlama Dilininin Basit Yapıları

C Konsol ve Komut Satırı

LCD (Liquid Crystal Display )

Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları

İŞLETİM SİSTEMİ İşletim sistemi kullanıcıyla bilgisayar donanımı arasında iletişim sağlayan programdır.

Bileenler arasndaki iletiim ise iletiim yollar ad verilen kanallar yardm ile gerçekleir: 1 Veri Yollar 2 Adres Yollar 3 Kontrol Yollar

Yazılım Mühendisliğine Giriş 4. Hafta 2016 GÜZ

Ana Bellek (RAM) İşlemci (CPU) Depolama

NESNEYE YÖNELİK PROGRAMLAMA

WebInstaller. 1. Kurulum Đçin Gereksinimler

MİKROBİLGİSAYAR SİSTEMLERİ VE ASSEMBLER

KULUÇKA PRG. VERSION KULLANMA KLAVUZU

Hem lw hem de sw komutlarının ofseti 16-bitlik işaretli tamsayıdır.

C İLE BUFFER OVERFLOW-2

XC8 ile PİC uygulamaları

BÖLÜM 3 3. PIC 16F8X KOMUTLARI 3.1.KULLANILAN SEMBOLLER: 3.2.KOMUTLAR VE KULLANIM ÖRNEKLERİ

PASCAL PROGRAMLAMA DİLİ YAPISI

Mifare Kart Yazıcı/Okuyucu Modül (MFM-200)

Transkript:

Debug Komutları Assembly komutlarının nasıl çalıştıklarını deneyerek görmek ve yazılan programların amacına uygun çalışıp çalışmadığını anlamak varsa hatalarını düzeltmek için DOS'un DEBUG.COM isimli programı kullanılmaktadır. Her ne kadar daha gelişmiş, kullanıcıya hitap eden debuger'lar olsa da kolay bulunulabilirliği ve basit uygulamalarda sağladığı rahatlık sayesinde tercih nedenidir. DEBUG programını kullanabilmek için komutlarını bilmek gereklidir. Burada DEBUG programının bazı komutlarını basit örnekler yardımıyla açıklamaya çalışacağız. C:\>DEBUG Çizgi işareti artık debug programının komut kabul etmeye hazır olduğunu belirtmektedir. R (Register) : Bu komut o andaki register değerlerini ve bayrakların durumunu belirlemekte kullanılır. R AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 2AF2:0100 8B24 MOV SP,[SI] DS:0000=20CD Bu komut yardımı ile register'lara istenilen değerler (hexadecimal olmak şartıyla) verilebilir. R AX AX 0000 : ':' işaretinden sonra AX register'i için istediğimiz değeri yazarak enter tuşuna basacak olursak; :12AF R AX=12AF BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 2AF2:0100 8B24 MOV SP,[SI] DS:0000=20CD AX registerinin değerinin 12AF olmasını sağlarız. Register ları takip eden NV UP EI PL NZ NA PO NC değerleri ise bayrakların durumunu belirtmektedir. R F NV UP EI PL NZ AC PO CY komutu ile sadece bayrakların durumu da görülerek gerekenler değiştirilebilir. Eğer flag değeri değiştirilmeyecek ise ara çubuğuna basarak bir sonraki flag değerine geçilebilir. Flag Đsmi Set(1) Clear (0) Overflow OF OV (overflow) NV (not overflow) Direction DF DN (decrement down) UP (increment up) Interrupt IF EI (enable) DI (disable) Sign SF NG (negative) PL (plus) Zero ZF ZR (zero) NZ (not zero) Auxilary Carry AF AC (auxilary carry) NA (not auxilary) Parity PF PE (even parity) PO (odd parity) Carry CF CY (carry yes) NC (not carry) Tablo 01 Debuger da kullanılan Flag kısaltmaları

D (Dump / Display): Bu komut ile belleğin istediğimiz segment'inin istediğimiz offset'inden itibaren bilgileri görebiliriz. Đstersek görmek istediğimiz alanı sınırlama imkanına da sahibiz. D DS:0 2AF2:0000 CD 20 FF 9F 00 9A EE FE1D F0 4F 03 5A 25 8A 03....O.Z%.. 2AF2:0010 5A 25 17 03 5A 25 14 2401 01 01 00 02 FF FF FF Z%..Z%.$... 2AF2:0020 FF FF FF FF FF FF FF FFFF FF FF FF 3B 25 4E 01...;%N. 2AF2:0030 16 2A 14 00 18 00 F2 2AFF FF FF FF 00 00 CE 0B.*...*... 2AF2:0040 06 1E 00 00 00 00 00 0000 00 00 00 00 00 00 00... 2AF2:0050 CD 21 CB 00 00 00 00 0000 00 00 00 00 20 20 20.!... 2AF2:0060 20 20 20 20 20 20 20 2000 00 00 00 00 20 20 20... 2AF2:0070 20 20 20 20 20 20 20 2000 00 00 00 00 00 00 00... Burada Data segment'in 0000H offset'inden itibaren olan kısmı gösterilmiştir. Eğer herhangi bir aralık verilmemiş ise 128 byte gösterir. Hexadecimal olarak belleğin dökümünü verdikten sonra yanında gösterilebilir ASCII karakter karşılıklarına da yer verilir. D DS:100,115 2AF2:0100 8B 24 17 5A 18 BA 4A 29A2 4F F6 C9 07 AE 07 09.$.Z..J).O... 2AF2:0110 20 8C 07 BA 4F 80...O. Görüldüğü gibi eğer D komutunun yanına gösterilmesi istenen aralığın adresi verilecek olursa sadece belirlenen adres aralığındaki değerler ekranda görüntülenecektir. A ( Assembly) : Bu komut Debug yardımıyla basit programlar yazmayı sağlar. Debug içinde yazılan programlar COM uzantılı programlarda olduğu gibi 100H offset adresinden başlarlar. Bu neden ile program çalıştırılacağı zaman mutlaka IP register'ının değerinin R komutu ile 100H e getirilmesi gerekmektedir. A 2AF2:0100 MOV AX,5 2AF2:0103 ADD AX,4 2AF2:0106 SHR AX,1 2AF2:0108 ^C A komutu verildikten sonra CS'in 100H adresinden itibaren assembly program yazmanıza imkan sağlanmış olur. Burada verilen her türlü sayı mutlaka hexadecimal formda olmalıdır. Komut yazmanız bittiğinde CtrlC tuşlarına basarak işlemi sonlandırabilirsiniz. T (Trace) : Yazılmış olan assembly komutları teker teker çalıştırılarak işlem sonunda register ve bayrakların aldıkları değerleri ekranda gösterir. T komutu çalışmaya IP nin gösterdiği noktadan itibaren başlar ve her komut işlendikten sonra durur. R AX=12AF BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 2AF2:0100 B80500 MOV AX,0005 T AX=0005 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2AF2 ES=2AF2 SS=2AF2 CS=2AF2 IP=0103 NV UP EI PL NZ NA PO NC 2AF2:0103 050400 ADD AX,0004 T AX=0009 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2AF2 ES=2AF2 SS=2AF2 CS=2AF2 IP=0106 NV UP EI PL NZ NA PE NC 2AF2:0106 D1E8 SHR AX,1 T AX=0004 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2AF2 ES=2AF2 SS=2AF2 CS=2AF2 IP=0108 NV UP EI PL NZ AC PO CY 2AF2:0108 A24FF6 MOV [F64F],AL DS:F64F=11 Bu örnekte görüldüğü gibi az evvel yazdığımız assembly kodunu çalıştırmış olduk. Her işlemden sonra register ve bayraklar üzerindeki değişikleri rahat izlememiz için hazırlanmış bir komuttur.

Eğer kullanıcı ister ise T komutunun yanına bir sayı da verebilir. Bu durumda verilen sayı kadar komut satırı arka arkaya çalıştırılır, her seferinde register ve flag değerleri ekrana yazılır. Örnek; T 5 Ya da kullanıcı istediği bir offset ten (adresten ) itibaren kaç komut çalıştıracağını da söyleyebilir. Örnek; T=200,5 Bu komut 200H offset'inden itibaren 5 komut arka arkaya çalıştır demektir. U (Unassembly) : CS de yazılı olan makine kodunu kullanıcının anlayacağı formdaki mnemonic'lere çevirmek için kullanılan bir komuttur. Her çağırılışında 32 byte uzunluğunda makine kodunun mnemonic'lerini kullanıcıya gösterir. U CS:112 2AF2:0112 07 POP ES 2AF2:0113 BA4F80 MOV DX,804F 2AF2:0116 FC CLD 2AF2:0117 807463BA XOR BYTE PTR [SI+63],BA 2AF2:011B C6418208 MOV BYTE PTR [BX+DI7E],08 2AF2:011F 83745BBA XOR WORD PTR [SI+5B],46 2AF2:0123 D208 ROR BYTE PTR [BX+SI],CL 2AF2:0125 847453 TEST DH,[SI+53] 2AF2:0128 BADE04 MOV DX,04DE 2AF2:012B 0908 OR [BX+SI],CX 2AF2:012D 85744B TEST SI,[SI+4B] 2AF2:0130 BAEA08 MOV DX,08EA Bu komut ile CS:112 adresinden itibaren 32 byte makine kodu unassembly edilerek mnemonic karşılıkları gösterilmiştir. Đstenirse başlangıç adresi ve kaç byte unassembly edilmesi gerektiği de parametre olarak verilebilir. U CS:100L8 Bu komut CS:100H adresinden itibaren 8 byte'ı unassembly edecektir. E (Edit) : Bellekte herhangi bir yerdeki değerleri değiştirmek amacıyla kullanılan bir komuttur. E DS:10 2AF2:0010 5A. Komut DS:10H adresindeki byte'in değerinin değiştirilmesi için kullanıcının bir hexadecimal değer girmesini bekler. Eğer değer değiştirilmeyecek ise ara çubuğu yardımıyla bir sonraki byte'a geçilerek onun değeri değiştirilebilir. Bu işlemi bitirmek için ENTER tuşuna basılmalıdır. F (Fill) : Bellek başlangıç ve bitiş adresleri belirlenen bir alanı belirlenen bir sayı ile doldurmak amacıyla kullanılır. F DS:100,120,AB F komutundan yararlanarak DS'in 100H120H arasındaki kısım ABH değeri ile doldurulacaktır. Bu işlemden sonra D komutu ile DS:100H adresinden itibaren incelersek işlemin olması gibi yapıldığını kontrol etmiş oluruz.

D DS:100 2AF2:0100 AB AB AB AB AB AB AB ABAB AB AB AB AB AB AB AB... 2AF2:0110 AB AB AB AB AB AB AB ABAB AB AB AB AB AB AB AB... 2AF2:0120 AB 5B BA D2 08 84 74 53BA DE 04 09 08 85 74 4B.[...tS...tK 2AF2:0130 BA EA 08 86 74 43 12 28BA F6 08 87 74 3B BA 02...tC.(...t;.. 2AF2:0140 50 08 90 20 88 74 33 BA0E 08 89 74 2B BA 1A 41 P...t3...t+..A 2AF2:0150 82 08 8A 74 23 BA 26 088B 74 1B BA 32 54 24 08...t#.&..t..2T$. 2AF2:0160 8D A2 BA 3E 08 8E 48 0074 0B BA 86 08 FF 74 03...>..H.t...t. 2AF2:0170 BA 4A 50 E9 1D A0 C0 C9BA 56 50 E8 17 75 E8 AB.JP...VP..u.. C (Compare) : Belirlenen aralıktaki bilgileri karşılaştırmak amacıyla kullanılan bir komuttur. C 100,110,10 2AF2:0100 AB 5A 2AF2:0010 2AF2:0101 AB 25 2AF2:0011 2AF2:0102 AB 17 2AF2:0012 2AF2:0103 AB 03 2AF2:0013 2AF2:0104 AB 5A 2AF2:0014 2AF2:0105 AB 25 2AF2:0015 2AF2:0106 AB 14 2AF2:0016 2AF2:0107 AB 24 2AF2:0017 2AF2:0108 AB 01 2AF2:0018 2AF2:0109 AB 01 2AF2:0019 2AF2:010A AB 01 2AF2:001A 2AF2:010B AB 00 2AF2:001B 2AF2:010C AB 02 2AF2:001C 2AF2:010D AB FF 2AF2:001D 2AF2:010E AB FF 2AF2:001E 2AF2:010F AB FF 2AF2:001F 2AF2:0110 AB FF 2AF2:0020 Bu komut 100H110H adresindeki bilgiler ile 10H adresinden başlayan bilgileri karşılaştırır ve farklı olanları listeler. C 100,110,100 100H110H adresindekileri yine 100H adresindekiler ile karşılaştırmaktadır. Herhangi bir farklılık bulunmadığı için ekranda hiçbir bilgi görünmez. C DS:100,110,CS:300 2AF2:0100 AB 25 2AF2:0300 2AF2:0101 AB 44 2AF2:0301 2AF2:0102 AB 68 2AF2:0302 2AF2:0103 AB 20 2AF2:0303 2AF2:0104 AB DD 2AF2:0304 2AF2:0105 AB 20 2AF2:0305 2AF2:0106 AB 91 2AF2:0306 2AF2:0107 AB CF 2AF2:0307 2AF2:0108 AB 3A 2AF2:0308 2AF2:0109 AB 1C 2AF2:0309 2AF2:010A AB 04 2AF2:030A 2AF2:010B AB 1C 2AF2:030B 2AF2:010C AB 6B 2AF2:030C 2AF2:010D AB 82 2AF2:030D 2AF2:010E AB 04 2AF2:030E 2AF2:010F AB 1C 2AF2:030F 2AF2:0110 AB 04 2AF2:0310 Görüldüğü gibi farklı segment'ler üzerindeki bilgiler de karşılaştırılabilmektedir. G (Go): Programın verilen bir adrese kadar ya da bitene kadar çalışmasını sağlamak amacıyla kullanılır. G Program terminated normally Program eğer düzgün çalıştı ise yukarıdaki mesaj ekrana gelecektir. Programın dönüş adreslerinde bir hata varsa ya da programda bir mantık hatası yapılmış ise program hiçbir zaman bitmez. Bu durumda makinenin reset edilmesi gerekecektir.

H (Hex ): Verilen iki sayının hexadecimal toplamını ve farkını hesaplamak için kullanılır. H2E,3 0031 002B Đlk gösterilen değer iki hexadecimal sayının toplamı diğeri ise farkıdır. L (Load) : Belleğe programı tekrar yüklemek için kullanılır. M (Move) : Bir yerdeki bir blok bilgiyi başka bir yere taşımak için kullanılır M DS:100,110,CS:500 Bu komut ile DS:100H ile DS:110H arasında kalan bilgi CS:500H adresinden itibaren yerleştirilecektir. P (Proceed) : Bu komut T komutu ile benzer özellikler göstermektedir. Komutları çalıştırdıktan sonra register ve flag değerlerini ekranda gösterir. Ancak T komutundan en büyük farklılığı özellikle LOOP, CALL, INT gibi komutların işlenmesindedir. Bu komutlardan herhangi biri P komutu ile çalıştırılacak olursa o işlemin detaylarına girmeden sonucu üretir. (Eğer bir LOOP ise çevrim sonuçlanana kadar, bir CALL ise işlemler yerine getirilip geri dönülene kadar ya da bir INT ise interrupt handler'in yapması gereken tüm işlemler yapıldıktan sonra register ve Bayrakların durumlarını gösterir). Q (Quit): Debuger dan çıkmak için kullanılan bir komuttur. Q C:\>