MTM 305 MĠKROĠġLEMCĠLER



Benzer belgeler
MTM 305 MĠKROĠġLEMCĠLER

MTM 305 MĠKROĠġLEMCĠLER

MTM 305 MĠKROĠġLEMCĠLER

8086 Mikroişlemcisi Komut Seti

MTM 305 MĠKROĠġLEMCĠLER

MTM 305 MĠKROĠġLEMCĠLER

Ders 3 ADRESLEME MODLARI ve TEMEL KOMUTLAR

Adresleme Modları. Mikroişlemciler ve Mikrobilgisayarlar

MTM 305 MİKROİŞLEMCİLER

Bölüm 4 Veri Aktarma Komutları

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

MTM 305 MĠKROĠġLEMCĠLER

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

MTM 305 MİKROİŞLEMCİLER

Program AkıĢ Kontrol Yapıları

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

İ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

MTM 305 MİKROİŞLEMCİLER

Mikrobilgisayar Donanımı

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

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

Fortran komut satırı toplam 80 kolon ve 5 bölgeden oluģur. Komut satırının yapısı aģağıdaki gibidir:

İşletim Sistemlerine Giriş

80x86 MICROPROCESSOR Instructions

Program Kontrol Komutları. Mikroişlemciler ve Mikrobilgisayarlar 1

Merkezi İşlem Birimi MİKROİŞLEMCİ SİSTEMLERİ. MİB Yapısı. MİB in İç Yapısı. MİB Altbirimleri. MİB in İç Yapısı

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

Quiz:8086 Mikroişlemcisi Mimarisi ve Emirleri

Aritmetiksel Komutlar

DIGIAC 2000 Deney Seti PAT İŞLEMCİ KARTI :

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

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

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

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler

Basit Bootstrap Uygulaması

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

b) Aritmetik İşlem Komutları

MİKROBİLGİSAYAR SİSTEMLERİ. Teknik Bilimler Meslek Yüksekokulu

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

Prepared By IcEN. >> IcEN. Bu makalemizde 80x86 gerçek mod komutlar inceleyece iz.

Program akıģı sırasında belirtilen satır numaralı yere gitmek için kullanılır. Genel formu: [<satır numarası>] GOTO <satır numarası 1> GOTO n

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

ÖZET. Lojiksel ve Hiziksel Hafıza. x86 byte düzeni nın Fiziksel Hafıza Yapısı. Ders 3. Temeller

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

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

Assembly Programlama Dili T e m m u z

8086 Mikroişlemcisi Komut Seti

BM-311 Bilgisayar Mimarisi

Merkezi İşlem Birimi MİKROİŞLEMCİ SİSTEMLERİ. MİB Yapısı. MİB Altbirimleri. Durum Kütüğü. Yardımcı Kütükler

Linux Assembly Programlamaya Giriş

BLM221 MANTIK DEVRELERİ

x86 Ailesi Mikroişlemciler ve Mikrobilgisayarlar

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

Mikroişlemcili Sistemler ve Laboratuvarı 8.Hafta

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

Yrd.Doç.Dr. Celal Murat KANDEMİR. Kodlama (Coding) : Bir nesneler kümesinin bir dizgi (bit dizisi) kümesi ile temsil edilmesidir.

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi

K uark projesi. Temel Özellikler :

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

Mikroişlemciler. Öğr. Gör. Kürşat Mustafa KARAOĞLAN Güz

Assembly. Programlama Dili. T e m m u z

Mikrobilgisayar Mimarisi ve Programlama

Öğr. Gör. Kürşat Mustafa KARAOĞLAN Güz

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

PASCAL PROGRAMLAMA DİLİ YAPISI

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUARI MİKROİŞLEMCİLİ A/D DÖNÜŞTÜRÜCÜ

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

Komutların Yürütülmesi

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

BÖLÜM 6 Seri Port Đşlemleri

HSancak Nesne Tabanlı Programlama I Ders Notları

MİKROİŞLEMCİ MİMARİLERİ

Algoritma ve Programlama II Dersi 3.ÖDEVĠ

BİLGİSAYAR MİMARİSİ. Bilgisayar Bileşenleri Ve Programların Yürütülmesi. Özer Çelik Matematik-Bilgisayar Bölümü

MTM 305 MĠKROĠġLEMCĠLER

Programlama Dilleri 1. Ders 12: Belirleyiciler ve Niteleyiciler

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

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

Özyineleme (Recursion)

BM-311 Bilgisayar Mimarisi

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

Bilgisayar Programlama MATLAB

8. İŞARETCİLER (POINTERS)

Banka Hesap Tanımı ĠÇERĠK

Mikrobilgisayar Sistemleri ve Assembler

BMT 101 Algoritma ve Programlama I Güz Dönemi. Yük. Müh. Köksal Gündoğdu 1

ENDA MODBUS PROTOKOLÜ

Adresleme Yöntemleri MİKROİŞLEMCİ SİSTEMLERİ. İşlenenin Yeri. Örnek MİB Buyruk Yapısı. İvedi Adresleme. Adresleme Yöntemleri. Bellek. Kütükler.

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

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

POLİNOMLARIN TANIMI. ÖĞRENCİNİN ADI SOYADI: KONU: POLİNOMLAR NUMARASI: SINIFI:

DERS 4 MİKROİŞLEMCİ PROGRAMLAMA İÇERİK

(Ders notu) Yrd.Doç.Dr. Vedat TOPUZ

Assembly Language Programming

6. Mikroişlemcili Geliştirme Sistemleri

Ö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

Mikroişlemcili Sistemler ve Laboratuvarı

Adresleme Yöntemleri MİKROİŞLEMCİ SİSTEMLERİ. Örnek MİB ile Adresleme. Adresleme Yöntemleri. Doğal Adresleme. İvedi Adresleme

Bir hafıza hücresinin adres bilgisini tutmaya yarayan değiģkenlere iģaretçi adı verilir. ĠĢaretçiler aģağıdaki gibi tanımlanırlar.

Dr. Fatih AY Tel: fatihay@fatihay.net

Transkript:

KARABÜK ÜNĠVERSĠTESĠ TEKNOLOJĠ FAKÜLTESĠ MEKATRONĠK MÜHENDĠSLĠĞĠ BÖLÜMÜ MTM 305 MĠKROĠġLEMCĠLER ArĢ. Gör. Emel SOYLU ArĢ. Gör. Kadriye ÖZ

Veri aktarım komutları

Komut kümesinde kullanılan kısaltmalar acc Akümülatör (EAX/AX/AL yazmaçlarından herhangi biri) reg 8/16/32 bitlik herhangi bir yazmaç regb 8 bitlik bir yazmaç regw 16 bitlik bir yazmaç reg32 32 bitlik bir yazmaç sreg herhangi bir kesim yazmacı mem herhangi bir bellek adresi idata 8/16/32 bitlik herhangi bir değer (3,0Ah,012EFh,'A' gibi) [..] İşaret grubu yazmaç veya göreli konum değerini gösteren sayı ile erişilebilen bellek içeriği disp8/disp16 8 bit(-128 0 127)/16 bit(-32768 0 32767)ile ifade edilebilecek büyüklükteki bir sayı kadar ifade dest/src Varış işleneni /Kaynak işleneni opr/opr # İşlenen/işlenen 1/işlenen 2/işlenen 3 italik yazı değişken isimleri 0/1/x/?/-- İşlem sonucunda bayrak değeri clear(0),set(1), işleme göre değişmemiş (x), belirsiz (?), değişmemiş olabilir(-) 16p 16 bit korumalı kip

MOV (mov data) MOV reg,idata MOV mem,idata MOV reg,reg MOV mem,reg MOV sreg,reg MOV reg,sreg MOV mem,sreg Ġki iģlenen ile kullanılan MOV komutu ikinci iģlenendeki veriyi ilk iģlenene aktarır. MOV komutunun bazı kısıtlamaları vardır. MOV komutunun her iki iģleneni mem ve sreg olamayacağı gibi ilk iģlenen sreg ise ikincisi idata olamaz. MOV dest,src ġeklinde ifade edilen komut src nin değerini dest e yerleģtirir. Bayraklar üzerinde herhangi bir değiģiklik yapmaz. MOV komutunda her iki iģlenenin de aynı tipte olması gerekir. Aksi halde derleyici tip uyuģmazlığı hatası verir.

Örnek: MOV Mydata,AX ; Mydata isimli bellek alanına AX yazmacında bulunan değer yerleģtirilmektedir. Mydata isimli bellek alanı yazmaç ile aynı tipte tanımlanmıģ olmalıdır. MOV AL,Result ; Result isimli bellek alanından, AL yazmacına veri aktarılmaktadır. Result isimli bellek alanının byte olarak tanımlanması gerekmektedir. MOV Mydata,12 ; Mydata isimli bellek alanına 12 değeri yerleģtirilmektedir. Kaynak iģlenen olan 12 sayısı hem byte hem word bir büyük olarak ifade edilebileceği dikkate alındığında Mydata isimli değiģkenin byte veya word olarak tanımlanmıģ olmasının iģleyiģe bir etkisi olmayacak, her iki durumda da atama iģlemi yapılacaktır.

Örnek: MOV WORD PTR[1001],120A; Bellek alanına adres ile eriģilmesi durumunda tip uyuģmazlığı söz konusu olabilir. Programcı bellek üzerinde iģlemleri hangi boyutta (byte/word) yapmak istediğine bağlı olarak gerekli tip tanımlamaları yapmalıdır. Bunu için doğru tipte adresleme modu kullanılmalıdır.

Örnek Program #make_com# ; COM file is loaded at CS:0100h ORG 100h X DW 35 mov ax,15 MOV [1001H],5 mov bx,ax mov cx,[1001h] mov [1002H],bx mov SI,ax MOV SI,[1002H] MOV cx,si MOV [1003h],SI ;reg,idata ;mem,idata ;reg,reg ;reg,mem ;mem,reg ;sreg,reg ;sreg,mem ;reg,sreg ;mem,reg HLT

MOVSX (mov with sign extension) MOVSX reg,reg MOVSX reg,mem Bu komut 8 bitlik değeri iģareti ile birlikte 16 veya 32 bitlik alana, 16 bitlik değeri iģareti ile birlikte 32 bitlik alana yerleģtirir. ĠĢaret, en anlamlı bitin yüksek anlamlı byte veya word ile tekrar edilmesi ile aktarılmaktadır. Genel olarak ilk iģlenen ikinci iģlenenden bir üst boyutta olmalıdır. Böylece ikinci iģlenende bulunan değer daha üst büyüklüğe iģaretli sayı olarak aktarılmıģ olur.

Örnek: MOVSX EAX,AL ; AL yazmacındaki 8 bitlik değeri 32 bite uzatarak EAX yazmacına aktarır. Bu iģlem sonucunda AL yazmacının iģaret biti (7.bit), 8-31. bitler boyunca tekrarlanır. AL=67H ise bu iģlemden sonra EAX=00000067H olacaktır. MOVSX EDI,WORD PTR[ESI] ; ESI yazmacının belirlediği bellek gözündeki 16 bit değeri 32 bite uzatarak EDI yazmacına aktarır.15. bit ile ifade edilen iģaret 16-31. bitlerde tekrarlanacaktır. MOVSX CX,DL; DL yazmacındaki 8 bitlik değeri 16 bite uzatarak CX yazmacına yerleģtirir. DL=80H ise sonuçta CX=0FF80H değerini alacaktır.

MOVZX (Move with zero extension) MOVZX reg,reg MOVZX reg,mem Bu komut 8 bitlik değeri 16 veya 32 bitlik alana 16 bitlik değeri 32 bitlik alana yerleģtirir. ĠĢaret uzantısı ise en anlamlı bitlerin 0 ile doldurulması ile elde edilir. Genel olarak ilk iģlenen ikinci iģlenenden bir üst boyutta olmak zorundadır. Böylece ikinci iģlenende bulunan değer üst büyüklüğe iģaretsiz sayı olarak aktarılmıģ olur.

Örnek MOVZX EAX,AL; AL yazmacındaki 8 bitlik değeri 32 bitlik değere uzatarak EAX yazmacına yerleģtirir. 8-31. Bitler 0 dır. AL=80H ise sonuçta EAX=00000080H olacaktır. MOVZX EDI,WORD PTR[ESI] ; ESI ile belirlenen bellek gözündeki değeri 32 bite uzatarak EDI yazmacına yerleģtirir. 16-31. Bitler 0 dır. WORD PTR ifadesi ile bellekten 1 WORD alınacağı belirlenmektedir. MOVZX CX,DL; DL yazmacının 8 bitlik değeri 16 bite uzatılarak CX yazmacına yerleģtirilir. 8-15. Bitler 0 dır. MOVZX BX, BL; BL yazmacındaki değeri iģaret değeri 0 olacak Ģekilde BX yazmacına yayar. Ancak MOV BH,0 iģlemi buna nazaran daha kısa sürede tamamlanacaktır.

LEA (load effective adres) LEA regw,mem ĠĢlem sonucunda regw de oluģan değer mem ile tanımlı bellek alanının, kesiminin baģından itibaren kaç byte olduğunu (göreli konum) belirlemektedir. Elde edilecek adres 16 bit uzunluğunda olacaktır. Bu nedenle iģlem sonucunun oluģacağı kısım mutlaka word tipinde bir yazmaç olmalıdır. Aynı iģlem OFFSET komutu ile de gerçekleģtirilebilmektedir.

Örnek: LEA SI,Mydata ; Mydata isimli bellek alanının, tanımlı olduğu kesimin baģından itibaren kaç byte uzakta olduğunu gösteren değer SI yazmacında oluģacaktır. AĢağıdaki bellek haritasında verilen değerlere göre SI=1002H olacaktır. 1004H 1003H 7 0 34H 4FH 1002H 0ABH Mydata 1001H 1000H 53H 2CH

Örnek Kod: #make_com# ; COM file is loaded at CS:0100h ORG 100h X DW 35 LEA BX,X

LDS(load data segment register) LDS regw,mem Regw ile belirlenen yazmaç ile DS yazmacına, mem ile belirlenen bellek bölgesinde bulunan değerler yüklenir. Yapılan iģlem: regw=[mem] DS=[mem+2] Bu komut bir seferde DS:SI ikilisinin değerlerinin bellek alanından alınmasını sağlamaktadır. Genel olarak SI yazmacı ile kullanılmasının arkasında, bellek eriģimlerinde DS ve SI yazmaçlarının birlikte kullanılması yatar. Benzer Ģekilde DI ve BX yazmaçları da bu komut ile birlikte kullanılabilir. Mem değeri doğrudan bir bellek adresi olarak verilebildiği gibi bir değiģken ile de verilebilir. Bu durumda kullanılacak olan değiģken 32 bit (doubleword) olacak Ģekilde tanımlanmıģ olması gereklidir.

Örnek: LDS SI,[0000] LDS SI,Mydata AĢağıda belirtilen bellek haritası uyarıca SI=5341H ve DS=4553H değerlerini almıģ olacaktır.mydata değiģkeni kullanılarak iģlem yapılmak istendiğinde değiģkenin double word olarak tanımlanmıģ olması gerekir. 7 0 0004H 0003H 0002H 0001H 4DH 45H 53H 53H 0000H 41H Mydata

LES(load extra segment register) LES regw,mem LDS komutu ile aynı özellikleri göstermektedir. Ancak iģlem diğerinden farklı olarak ES yazmacı kullanılarak gerçekleģtirilir. Yapılan işlem: Regw=[mem] ES=[mem+2] Bu komut bir seferde ES:DI ikilisinin değerlerinin bellek alanından alınmasını sağlamaktadır. Genel olarak DI yazmacı kullanılmasının arkasında bellek eriģimlerinde ES ve DI yazmaçlarının birlikte kullanılması yatmaktadır. Benzer Ģekilde SI ve BX yazmaçları da bu komut ile birlikte kullanılabilir. Mem değeri doğrudan bir bellek adresi olarak verilebildiği gibi bir değiģken ile de verilebilir. Bu durumda kullanılacak olan değiģkenin 32 bit olacak Ģekilde tanımlanmıģ olması gerekmektedir.

Örnek: LES DI,[0001] LDSSI,Mydata Yukarıdaki bellek haritası uyarınca yapılan iģlem sonucunda DI=5351H ve ES=4D45H değerlerini almıģ olacaktır. Mydata kullanılarak iģlem yapılmak istendiğinde değiģkenin 32 bit (double word) olacak Ģekilde tanımlanmıģ olması gerekmektedir. 7 0 0004H 0003H 0002H 4DH 45H 53H 0001H 51H Mydata 0000H 41H

XCHG(Exchange) XCHG reg,reg XCHG reg,mem XCHG mem,reg XCHG iģlenenlerin değerlerinin değiģ tokuģ edilmesini sağlayan komuttur. Aynı sonucu, biraz daha uzun sürede ek bir yazmaç veya bellek alanı kullanarak daha fazla kod üreterek MOV komutları ile elde etmek te mümkündür. Ancak assembly dili mevcut kaynakların sınırlı olduğu durumlarda çözümler üretebilen bir dil olup bu gibi durumlarda XCHG komutu tercih edilmelidir.

Örnek: XCHG AX,BX; AX yazmacının sahip olduğu değer ile BX yazmacının sahip olduğu değer değiģtirilir. XCHG AX,Mydata[SI]; Burada ise AX yazmacının değeri Mydata isimli bellek adresinin SI ıncı adresinden baģlayan word yer değiģtirmektedir.mydata word olarak tanımlanmalıdır.

Örnek Kod: #make_com# ; COM file is loaded at CS:0100h ORG 100h X DW 35 mov ax,10 xchg ax,x hlt

XLAT/XLATB (Translate byte) XLAT XLATB Doğrudan iģleneni olmayan bir komuttur. AL yazmacını, baģlangıcı DS:BX yazmaçları ile belirlenen adresteki bir tablo içerisinde indis olarak kullanmayı sağlar. Yapılan iģlem: AL=DS:[BX+AL] veya AL=DS:[EBX+AL] dir.

Örnek: LEA BX,Ascii2ebcdic MOV AL, A XLAT Ascii2ebcdic isimli bellek alanında ASCII ve EBCDIC kodlama sistemi arasındaki dönüģüm yapmayı sağlayan 256 byte uzunluğunda bir dizi olduğunu, dizinin indislerinin ASCII kodlar, içeriğinin ise ASCII kodlara karģılık gelen EBCDIC değer olduğunu düģünelim. AL yazmacına A yerleģtirilip, XLAT komutu iģlendiğinde diziden A harfinin EBCDIC karģılığı alınarak AL yazmacına konacaktır.

ÖRNEK Kod: #make_com# ; COM file is loaded at CS:0100h ORG 100h dizi db 0,8,2,3,1,9,12,7,8,0,10,11,12,13,14 lea bx,dizi mov al,5 xlat hlt

Beni dinlediğiniz için teģekkür ederim.